gpt4 book ai didi

python - 找到两个列表相同的基于 1 的位置

转载 作者:太空宇宙 更新时间:2023-11-03 14:28:44 25 4
gpt4 key购买 nike

挑战是编写一个函数来比较两个相当小的整数列表(每个列表大多少于 10 个元素)。一个列表可能是这样的:

self = [0, 0, 1, 2]

要与之比较的列表可能类似于以下示例之一:

other1 = []
other2 = [0, 0, 1]
other3 = [0, 0, 1, 2, 0]
other4 = [0, 1, 1, 2]
other5 = something

如您所见,重复元素很常见,元素的顺序很重要。

期望的结果应该是一个整数,代表self和other有多久相同,从头算起。所以取决于其他,结果将是:

result1 = 0
result2 = 3
result3 = 4
result4 = 1
result5 = 0

代码应该是最有效的,因为每次用户交互都会使用大约 100 次。

我编写了以下代码,它按预期工作,但似乎有点慢:

def match(self, other):
if self == other:
return len(self)
element = -1
for element in range(min(len(self), len(other))):
if self[element] != other[element]:
element -= 1
break
return element +1

第一个 if 语句已经是加快速度的增强功能,但解决方案看起来仍然很慢,而且看起来有点笨拙,因为它对名为 element 的变量和两个 return 语句进行了所有更正。

有没有人给这样的函数起一个比“匹配”或“比较”更好的名字?

最佳答案

>>> from itertools import takewhile, izip
>>> def F(seq1, seq2):
return sum(1 for x in takewhile(lambda x: x[0] == x[1], izip(seq1, seq2)))

>>> F([0, 0, 1, 2], [0, 0, 1, 2, 0])
4

关于python - 找到两个列表相同的基于 1 的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15457784/

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