查找包含值Python的列表的所有索引

时间:2017-06-16 16:22:39

标签: python python-2.7 list indexing

我有2个列表

lst = [1,2,3,4,5,1,2,1,2,3]
lst2 = [1,2,3]

我正在尝试查看lst中的索引元素位于lst2。目前我在做;

ind = []
for x in lst2:
    if x in lst:
        ind.append(lst.index(x))

我意识到问题是lst.index(x)仅返回元素的第一个匹配项,因此x=1将始终返回lst.index(1) = 0

有没有办法返回包含该元素的所有索引?

2 个答案:

答案 0 :(得分:5)

您可能会使用类似

的内容
ind = [[i for i, value in enumerate(lst) if value == x] for x in lst2]

我不知道此操作的目的,但使用dict理解可能更有用:

ind = {x: [i for i, value in enumerate(lst) if value == x] for x in lst2}

因为在这种情况下,您将获得类似的输出:{1: [0, 5, 7], 2: [1, 6, 8], 3: [2, 9]},这可能更容易使用。

答案 1 :(得分:1)

这就是你要求的:

ind = [i for i, x in enumerate(lst) for y in lst2 if x == y]
相关问题