1 回答

TA貢獻1887條經驗 獲得超5個贊
使用zip
我認為你想要的代碼是:
rows = list(zip(sortedList, reversed(sortedList)))
但是,請注意,這會“重復”元素:
>>> sortedList = [1, 2, 3, 4, 5]
>>> list(zip(sortedList, reversed(sortedList)))
[(1, 5), (2, 4), (3, 3), (4, 2), (5, 1)]
如果您知道列表有偶數個元素并且想避免重復,您可以改為編寫:
rows = list(zip(sortedList[:len(sortedList)//2], reversed(sortedList[len(sortedList)//2:])))
結果如下:
>>> sortedList = [1,2,3,4,5,6]
>>> list(zip(sortedList[:len(sortedList)//2], reversed(sortedList[len(sortedList)//2:])))
[(1, 6), (2, 5), (3, 4)]
使用循環
盡管我建議使用zip而不是for-loop,但以下是修復您編寫的循環的方法:
rows = []
for i in range(len(sortedList)):
rows.append((sortedList[i], sortedList[-i-1]))
結果:
>>> sortedList=[1,2,3,4,5]
>>> rows = []
>>> for i in range(len(sortedList)):
... rows.append((sortedList[i], sortedList[-i-1]))
...
>>> rows
[(1, 5), (2, 4), (3, 3), (4, 2), (5, 1)]
添加回答
舉報