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

Python 在另一个列表中查找一个列表的值的索引,python,Python,我有两个Python整数列表:x和y。x的所有元素都出现在y的某个位置,并且只出现一次。对于x的每个元素,我想知道y中对应值的索引。然后我想将这些索引设置为列表z 下面的代码正如我刚才描述的那样工作。然而,对于一项任务来说,这似乎有点笨拙,我怀疑在几行左右的时间内可能会有一个更优雅的解决方案。因此,我的问题是,可以重写以下代码的最少行数是多少 z = [0 for i in range(len(x))] for i, j in enumerate(x): for k, l in enum

我有两个Python整数列表:x和y。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

以下是一种方法:

z = [y.index(i) for i in x]

以下是一种方法:

z = [y.index(i) for i in x]

列表确实有一个.index方法。列表确实有一个.index方法。这就是实现它的方法。请注意,虽然这在实践中对于小列表可能不是一个问题,但它有二次行为,因此对于大列表来说速度较慢。在y中扫描lenx次,实际上只需要扫描一次。这是一种方法。请注意,虽然这在实践中对于小列表可能不是一个问题,但它具有二次行为,因此对于大列表来说速度较慢。你在y上扫描了lenx次,而实际上你只需要扫描一次。