我有两个列表list1
和list2
,我希望获得list1
元素的所有索引,这些索引也在第二个
for i in list1:
print(i) ## this works fine
Test_features_index.append(list1.index(i for i in list2))# here not that well
运行这个doens不起作用就是我得到的:
<ipython-input-35-8d7ff70a8be0> in <module>()
----> 1 Test_features_index.append(list1.index(i for i in list2))
ValueError: <generator object <genexpr> at 0x0000021710BBA7D8> is not in list
知道怎么做吗?我想避免使用for循环,但不确定是否可能
答案 0 :(得分:1)
您正在尝试查找应该在列表中的生成器表达式的索引。此外,重复使用list.index
并不是非常有效,因为您每次都会运行整个列表(最坏情况)。
您可以使用enumerate
使用列表理解:
set2 = set(list2)
Test_features_index = [i for i, x in enumerate(list1) if x in set2]
使用集合查找共享项可确保0(1)查找时间,而不是列表的O(n)。