我做了這段代碼,所以我反轉了整數的子陣列組,但實際上它只反轉了第一個子陣列,我不知道為什么會這樣!!!這是代碼:
def reverseInGroups(self, arr, N, K):
rev=list()
count=0
reach=K
limit=0
while limit<N-1:
rev[limit:reach]=reversed(arr[limit:reach])
limit=limit K
reach=reach K
if reach==N-1 or reach<N-1:
continue
elif reach>N-1:
reach=N-1
return rev
這是輸入,預期的輸出和我的輸出:
For Input:
5 3
1 2 3 4 5
Your Output:
1 2 3 4 5
Expected Output:
3 2 1 5 4
uj5u.com熱心網友回復:
您不必創建新串列rev,您可以反轉串列中的專案arr。例如:
def reverseInGroups(arr, N, K):
limit = 0
while limit < N:
arr[limit : limit K] = reversed(arr[limit : limit K])
limit = K
return arr
l = [1, 2, 3, 4, 5]
print(reverseInGroups(l, 5, 3))
印刷:
[3, 2, 1, 5, 4]
uj5u.com熱心網友回復:
我在線嘗試了您的代碼并且它很好,但是您的函式中有一個邏輯錯誤來獲得您想要的輸出。
while limit<N-1:
rev[limit:reach]=reversed(arr[limit:reach])
limit=limit K #3
reach=reach K #6
if reach==N-1 or reach<N-1:
continue
elif reach>N-1:
reach=N #5
這是一張圖片,看看我的意思圖片描述
uj5u.com熱心網友回復:
我建議你使用這個更簡單的解決方案:
arr = [1, 2, 3, 4, 5]
n = 5
k = 3
new_arr = list()
for index in range(0, n - 1, k):
new_arr[index:index k] = arr[index:index k][::-1]
print(new_arr)
輸出是:
[3, 2, 1, 5, 4]
將此代碼放入您的函式后,如下所示:
def reverseInGroups(self, arr, n, k):
new_arr = list()
for index in range(0, n - 1, k):
new_arr[index:index k] = arr[index:index k][::-1]
return new_arr
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/505437.html
標籤:Python 数组 python-3.x 列表 排序
上一篇:訪問具有已知深度變數的嵌套串列
