gpt4 book ai didi

python - 如何查找存在于两个列表中但具有不同索引的元素

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:14:50 25 4
gpt4 key购买 nike

我有两个长度相同的列表,其中包含各种不同的元素。我正在尝试比较它们以找出存在于两个列表中但具有不同索引的元素数量。

这里有一些示例输入/输出来演示我的意思:

>>> compare([1, 2, 3, 4], [4, 3, 2, 1])
4
>>> compare([1, 2, 3], [1, 2, 3])
0
# Each item in the first list has the same index in the other
>>> compare([1, 2, 4, 4], [1, 4, 4, 2])
2
# The 3rd '4' in both lists don't count, since they have the same indexes
>>> compare([1, 2, 3, 3], [5, 3, 5, 5])
1
# Duplicates don't count

列表的大小始终相同。

这是我目前的算法:

def compare(list1, list2):
# Eliminate any direct matches
list1 = [a for (a, b) in zip(list1, list2) if a != b]
list2 = [b for (a, b) in zip(list1, list2) if a != b]

out = 0
for possible in list1:
if possible in list2:
index = list2.index(possible)
del list2[index]
out += 1
return out

做同样的事情,有没有更简洁、更有说服力的方式?

最佳答案

此 python 函数确实适用于您提供的示例:

def compare(list1, list2):
D = {e:i for i, e in enumerate(list1)}
return len(set(e for i, e in enumerate(list2) if D.get(e) not in (None, i)))

关于python - 如何查找存在于两个列表中但具有不同索引的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16528370/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com