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