挑戰是編寫一個函數來比較兩個相當小的整數列表(每個小於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