挑战是编写一个函数来比较两个相当小的整数列表(每个列表通常少于 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 语句已经是加快速度的增强,但解决方案似乎仍然很慢,而且对变量命名元素和两个返回语句的所有更正看起来也有点笨拙。
有没有人为这种比“匹配”或“比较”更好的功能命名?