2

私が見つけようとしているプログラムの早い段階でエラーがありましたが、コードのこの部分で何が起こっているのかを説明するように求められました。以下はコードとそれが何をしていると思うかですが、いくつかの点で不明確です。理解に役立つ情報をいただければ幸いです。

for title in titles:
    secString = 'sec_%02d' % (title)
    titleCitations = [c for c in cEdges if secString in c[0]]
    intraCitations = [c for c in titleCitations if secString in c[1]]
    print title, len(titleCitations), len(intraCitations), len(titleCitations) - len(intraCitations)

まず、secStringは、'sec_%02d'タイトルに関して残りを取ります(これは、タイトルへの参照を持つすべての文字列を検索しているだけだと思いますか?)。次に、リストのタイトルを作成します。

括弧で囲まれた部分に戸惑いますが。私が正しく理解していれば、それは与えられた米国の法典参照からの数字のペアの単なるリストであると私が信じるcEdgeを取ります。つまり、26 USC 501はちょうど(26、501)になり、secStringがcに値を持っているかどうかを尋ねます[0]スポット。

(ここで混乱します。c[0]スポットは上記の例の26に対応し、c [1]は501に対応すると思いますか?もちろん、理解しているかどうかさえわかりません。 c部分が正しくあります。)

次に、c [0]スポットが埋められている場合は、タイトルに入れます。次に、引用内リストを作成します。このリストはtitlecitationsリストを見て、secStringにc [1]が入力されているかどうかを尋ね、入力されている場合はこのリストに入れます。

タイトル引用とイントラ引用は同じリストであるように見えるので、何かに問題があることを私は知っています。

4

3 に答える 3

1
secString = 'sec_%02d' % (title)

文字列の%演算子はモジュラスではなく、Cのprintf()のように動作するフォーマット演算子です。2桁の数字として%02dフォーマットするフォーマットコードです。titleが1桁しかない場合titleは、それをaで埋めます0(たとえば、9はになります09)。

(ここで混乱します。c[0]スポットは上記の例の26に対応し、c [1]は501に対応すると思いますか?もちろん、理解しているかどうかさえわかりません。 c部分が正しくあります。)

それは正しいです。

titleCitations = [c for c in cEdges if secString in c[0]]

これにより、のアイテムが検索されcEdges、タイトルに文字列sec_XYが含まれているアイテムが見つかります。XYは前の2桁の数字です。

intraCitations = [c for c in titleCitations if secString in c[1]]

これで、前の手順で見つけたものを検索し、再びサブ文字列を検索しますsec_XY

最終結果には、最初の項目と2番目の項目の両方に部分文字列が含まれるintraCitationsすべての項目のリストが含まれます。cEdgessec_XY

于 2012-10-17T02:53:38.970 に答える
0

次のようなリスト内包表記:

result = [element for element in list if element in set]

と同等です:

result = []
for element in list:
    if element in set:
        result.append(element)

element in set(あなたの場合、c[0]およびc[1])はメンバーシップテストであり、elementがに含まれている場合はTrueですset

コードの詳細についてはtitleCitations、ドキュメントで引用されているソース[1]を参照してくださいtitleintraCitations(から選択されているためtitleCitations)およびreferenceによって参照されるテキストが含まれていますtitle

[1]実際にはtitleCitations、両方に、これらの制約を満たすintraCitationsタプルが含まれています。c

于 2012-10-17T02:47:50.893 に答える
0
for title in titles:

    secString = 'sec_%02d' % (title)

整数のタイトルをゼロで埋められたこの文字列に挿入して、2文字の長さにします

    titleCitations = [c for c in cEdges if secString in c[0]] 

cEdgesの各要素(それ自体がリスト)を通過し、最初の要素にビルドされたばかりの文字列が含まれている要素のみが含まれます

    intraCitations = [c for c in titleCitations if secString in c[1]]

同様に、2番目の要素にsecStringが含まれている要素を含むtitleCitationsのサブリストを作成します

    print title, len(titleCitations), len(intraCitations), len(titleCitations) - len(intraCitations)

本のタイトル、タイトル引用の要素数(おそらくこれが引用された回数)、イントラシテーションの数、およびイントラシテーションではないtitleCitationsの数(一方が他方のサブセットであることを示唆している)を印刷します。

于 2012-10-17T02:48:40.200 に答える