我試圖讓這個函式來檢查串列 SEQUENCE 是否是串列 ARRAY 的子序列。子序列的意思是:必須有所有的數字,并且它們必須是相同的順序。在下面的示例中,SEQUENCE 是 ARRAY 的子序列。陣列=[5, 1, 22, 25, 6, -1, 8, 10] 序列= [1, 6, -1, 10]
誰能告訴我為什么我的代碼不起作用?
array=[5, 1, 22, 25, 6, -1, 8, 10]
sequence= [1, 6, -1, 10]
def isValidSubsequence(array, sequence):
arrayValid=[]
if len(array) >= len(sequence):
for i in range(len(sequence)):
numSeq = sequence[i]
for j in range(i, len(array)):
numArr = array[j]
if numSeq==numArr:
arrayValid.append(numArr)
array.remove(numArr)
else:
array.remove(numArr)
if arrayValid==sequence:
return True
else:
return False
else:
return False
uj5u.com熱心網友回復:
您在 j ( ) 上的回圈for j in range(i, len(array)):從對應于順序位置的索引開始。通過陣列前進必須獨立于順序值的索引。
您可以使用迭代器執行此操作:
array=[5, 1, 22, 25, 6, -1, 8, 10]
sequence= [1, 6, -1, 10]
iArray = iter(array)
isSubsequence = all(s in iArray for s in sequence)
print(isSubsequence) # True
該s in iArray部分將迭代器 (iArray) 推進到找到 s 的位置。如果array 以相同的順序包含sequence 的所有元素,那么sequence 中的每個s 將能夠前進到iArray 中的匹配值。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/418741.html
標籤:
上一篇:0SVGg元素的y軸位置
下一篇:for回圈似乎根本沒有運行
