python中的列表索引比较

sbh*_*b91 2 python indexing comparison list

通过列表索引比较,我的意思是我有两个列表,我根据 2 个不同的标准使用不同的方法(冒泡排序和插入排序)对它们进行排序。我现在想比较其中一个列表中的元素是否在另一个列表中的相同位置,如果是,则返回其位置。所以因为我有

List1 = selectionsort()
List2 = bubblesort()
indices = [List1.index(i) for i in List2]
print (str(indices))
Run Code Online (Sandbox Code Playgroud)

我知道这是不对的,因为它将 List1 的元素与 List2 元素进行比较并返回它们匹配的位置(我认为)。此外,这种暗示 List1 是 List2 的子集,但事实并非如此,这两个列表相同,只是排序不同

the*_*eye 5

您可以使用列表理解来获得这样的匹配索引

list1, list2 = [1, 2, 3], [1, 4, 3]
print [index for index, (e1, e2) in enumerate(zip(list1, list2)) if e1 == e2]
Run Code Online (Sandbox Code Playgroud)

输出

[0, 2]
Run Code Online (Sandbox Code Playgroud)

我们首先用 .zip 压缩两个列表zip。因此,在每次迭代中,我们都会从两个列表中获取相应位置的元素。然后我们运行它enumerate,它将返回一个带有索引和可迭代元素的实际元素的元组。如果元素匹配,我们保留索引。

编辑:对于您在评论部分给出的特定输入

list1, list2 = ["a", "b", "c", "d", "e"], ["e", "d", "c", "b", "a"]
print [index for index, (e1, e2) in enumerate(zip(list1, list2)) if e1 == e2]
Run Code Online (Sandbox Code Playgroud)

输出

[2]
Run Code Online (Sandbox Code Playgroud)