我有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
。
有没有办法返回包含该元素的所有索引?
答案 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]