在給定陣列上應用查詢后,函式不會回傳結果陣列(res)。
''' 根據查詢反轉陣列。查詢中的每對值都是給定 Array(Arr) 的開始和結束索引。
'''
Arr = [5,3,2,1,3]
Queries = [0,1,1,3,2,4]
def Reverse(Arr, Queries):
res=[]
for item in Arr:
res.append(item)
n = Queries[1]
while(Queries[0] != n 1):
for i in range(Queries[0], Queries[1] 1):
res[Queries[0]] = Arr[Queries[1]]
Queries[0] = 1
Queries[1] -= 1
Arr.clear()
for item in res:
Arr.append(item)
Queries.pop(0)
Queries.pop(0)
#print(res)
if len(Queries)== 0:
return res
else:
Reverse(Arr, Queries)
print(Reverse(Arr, Queries))
uj5u.com熱心網友回復:
在您的Reverse函式中,如果len(Queries)不等于,則不會0顯式回傳任何內容,因此函式會回傳None。
即使那樣,你也會得到一個IndexError因為你復雜的邏輯。
相反,讓我們復制arr(這是一個串列,而不是一個陣列)。然后我們將遍歷queries. 通過給出range三個引數,我們指定從哪里開始,在哪里停止,以及增加的數量。如果queries有長度6,i將是0,2和 last 4。
然后我們可以使用它來分割串列并反轉指定的部分。
def reverse(arr, queries):
res = arr.copy()
for i in range(0, len(queries), 2):
res[queries[i]:queries[i 1] 1] = list(reversed(res[queries[i]:queries[i 1] 1]))
return res
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/505441.html
上一篇:如何遍歷串列并相互比較每個字符
下一篇:反轉SML中的串列
