0

可能重复:
Python:为两个列表的交集查找相应的索引

我有以下代码行:

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

我试图找到上面两个组件的交集索引。两者都是有几个共同点的冗长列表。相交部分完美运行;但是,for 循环似乎什么也没输出。(即:没有打印任何内容)。

Python 没有输出错误,当我在 IPython 中运行代码时,我注意到 i 等同于列表“catdate”中的最后一个元素,而不是列出等同于交集值的“catdate”索引。

任何帮助是极大的赞赏!

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 回答