使用其他列表的索引填充列表

时间:2017-04-06 09:30:53

标签: python

我有两个列表list1list2,我希望获得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循环,但不确定是否可能

1 个答案:

答案 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)。