我有这个列表:
list1 = [a, b, c, d, e, f, g]
我还有另一个列表列表以及list1中的项目:
list2 = [[a, c], [d,e,f], [g]]
我想以与列表2相同的顺序了解list1中的索引:
indexes = [[0, 2], [3, 4, 5], [6]]
谢谢!
答案 0 :(得分:5)
尝试一下:
indexes = [[list1.index(k) for k in i] for i in list2]
输出:
[[0, 2], [3, 4, 5], [6]]
答案 1 :(得分:4)
您可以使用以下列表推导,其中在enumerate
上进行迭代时,可以使用list1
获得与值匹配的索引:
[[ix for j in i for ix,k in enumerate(list1) if k==j] for i in list2]
# [[0, 2], [3, 4, 5], [6]]
一些读物可能对您有用:
答案 2 :(得分:1)
一种有效的方法是使用dict理解来创建将enumerate
的项映射到索引的映射,然后使用列表理解根据映射的dict将子列表中的项映射到索引:
d = {k: i for i, k in enumerate(list1)}
[list(map(d.get, l)) for l in list2]
这将返回:
[[0, 2], [3, 4, 5], [6]]