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



我有 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

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

你可以

使用类似的东西

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

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

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]} ,这可能更容易使用。

这符合您的要求:

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

最新更新