挑战是编写一个函数来比较两个相当小的整数列表(每个小于10个元素)。 一个列表可能是这样的:找到两个列表相同的基于1的位置
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语句进行更正。
有没有人比这个函数的名字比'match'或'compare'更好?
'common_prefix_size(list1,list2)'可能比'match'更好的名字 – jfs 2013-03-18 14:41:08