Python:尝试获取交叉点的索引

Python:尝试获取交叉点的索引,python,indexing,set-intersection,Python,Indexing,Set Intersection,可能重复: 我有以下代码行: for i in [i for i,x in enumerate(catdate) if x == set(NNSRCfile['datetimenew']).intersection(catdate)]: print i 我试图找到上面两个组件的交点索引。两者都是冗长的列表,有几个共同点。交叉部分工作正常;然而,for循环似乎什么也不输出。(即:没有印刷品) Python没有输出错误,当我在IPython中运行代码时,我注意到我与列表“catdate”

可能重复:

我有以下代码行:

for i in [i for i,x in enumerate(catdate) if x == set(NNSRCfile['datetimenew']).intersection(catdate)]:
    print i
我试图找到上面两个组件的交点索引。两者都是冗长的列表,有几个共同点。交叉部分工作正常;然而,for循环似乎什么也不输出。(即:没有印刷品)

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


非常感谢您的帮助

如果您想测试
x
是否在您的十字路口,您应该使用:

indices = [i for (i, x) in enumerate(catdate) if x in set(NNSRCfile['datetimenew']).intersection(catdate)]
for i in indices:
    print i
否则,您将单个元素与集合进行比较,这不太可能起作用(因此,测试总是失败,您的
索引
列表为空,未打印任何内容…

set()将与单个值不匹配,请尝试:

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

就我个人而言,我会避免使用相同的“我”在这样的嵌套上下文中,顺便说一句,虽然python允许这样做。至少读起来有点混乱。

这和你昨天的帖子不同吗?是的,是的,尽管这是同一个问题。不过我正在尝试一种不同的方法。你确定不想用
x in…
来测试
x
是否在你的交叉点吗?@Pierre,是吗你是说用“x in”而不是“x==”?你知道交集没有(逻辑上)做任何事情,因为我们知道x在catdate中,你只需要测试x是否在set中(NNSRCfile['datetimenew'])。但是预计算交集可能更有效。我想这解决了我的问题。我不知道你可以“如果…in…”非常感谢您的帮助。:@user1620716很高兴为您提供帮助。熟能生巧,坚持下去!