在另一个列表中查找一个列表的值的索引

3
我有两个Python整数列表:xy。所有x的元素都出现在y中某处,且仅出现一次。对于x的每个元素,我想知道在y中相应值的索引。然后,我想将这些索引设置为一个列表z
下面的代码按照我刚才描述的方式工作。但是,对于一个我怀疑可能只需几行更优雅的解决方案的任务而言,它似乎有点笨拙。因此,我的问题是,以下代码可以以多少行最少的形式重写?
z = [0 for i in range(len(x))]
for i, j in enumerate(x):
    for k, l in enumerate(y):
        if j==l:
            z[i] = k
            break

1
列表确实有一个 .index() 方法。 - Ashwini Chaudhary
1个回答

6
这是一种实现方式:
z = [y.index(i) for i in x]

那就是正确的做法。 - Dan D.
1
请注意,虽然对于小列表来说这可能不是问题,但它具有二次行为,因此对于大列表而言速度会很慢。(当你只需要执行一次时,最终会扫描y len(x)次。) - DSM

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接