0

重複の可能性:
Python: 2 つのリストの共通部分に対応するインデックスを見つける

次のコード行があります。

for i in [i for i,x in enumerate(catdate) if x == set(NNSRCfile['datetimenew']).intersection(catdate)]:
    print i

上記の 2 つのコンポーネントの交差のインデックスを見つけようとしています。どちらも長いリストであり、いくつかの共通点があります。交差部分は完全に機能します。ただし、for ループは何も出力しないようです。(つまり、印刷されるものは何もありません)。

Python はエラーを出力しません。IPython でコードを実行すると、交差値に相当する「catdate」のインデックスをリストするのではなく、リスト「catdate」の最後の要素に i が相当することがわかります。

どんな助けでも大歓迎です!

4

2 に答える 2

2

xが交差点にあるかどうかをテストする場合は、次を使用する必要があります。

indices = [i for (i, x) in enumerate(catdate) if x in set(NNSRCfile['datetimenew']).intersection(catdate)]
for i in indices:
    print i

それ以外の場合、単一の要素をセットと比較しているため、うまくいかない可能性があります (したがって、テストは常に失敗し、indicesリストは空で、何も出力されません...

于 2012-09-25T15:35:33.840 に答える
0

set() は単一の値と一致しません。試してください:

if set(x) == set( ...

個人的には、そのようなネストされたコンテキストで同じ「i」を使用することは避けたいと思います.ところで、pythonはそれをalloqwsします. 少なくとも読むのは紛らわしい..

于 2012-09-25T15:42:47.863 に答える