我有兩個相同長度的隨機清單,在0至99之間如何找到重複的第一個實例的兩個相等長度的位置,排序的列表
lista = [12,34,45,56,66,80,89,90]
listb = [13,30,56,59,72,77,80,85]
我需要找到的第一個實例一個重複號碼,以及它來自哪個列表。 在這個例子中,我需要在listb中找到數字'56',並獲得索引i = 2
謝謝。
更新: 運行它了幾次後,我得到這個錯誤:
if list_a[i] == list_b[j]:
IndexError: list index out of range
像@Asterisk建議,我的兩個列表是相等的長度和排序,i和j是在設置爲0開始。 所述位是一個遺傳交叉代碼部分:
def crossover(r1,r2):
i=random.randint(1,len(domain)-1) # Indices not at edges of domain
if set(r1) & set(r2) == set([]): # If lists are different, splice at random
return r1[0:i]+r2[i:]
else: # Lists have duplicates
# Duplicates At Edges
if r1[0] == r2[0]: # If [0] is double, retain r1
return r1[:1]+r2[1:]
if r1[-1] == r2[-1]: # If [-1] is double, retain r2
return r1[:-1]+r2[-1:]
# Duplicates In Middle
else: # Splice at first duplicate point
i1, i2 = 0, 0
index =()
while i1 < len(r1):
if r1[i1] == r2[i2]:
if i1 < i2:
index = (i1, r1, r2)
else:
index = (i2, r2, r1)
break
elif r1[i1] < r2[i2]:
i1 += 1
else:
i2 += 1
# Return A Splice In Relation To What List It Appeared First
# Eliminates Further Duplicates In Original Lists
return index[2][:index[0]+1]+index[1][index[0]+1:]
該函數採用2所列出並返回一個。 域是一個10個簇的列表:(0,99)。
正如我所說,錯誤不會發生在每一次,只有一段時間。
我感謝您的幫助。
您說'隨機',但您的示例已排序。哪個是對的? –
我認爲這是列表隨機生成,然後排序。 – paddy
列表中的數字是隨機生成的,範圍爲0到99.我已經預先對它們進行了排序。 編輯:稻田,是的。 – HDunn