亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何從根據其屬性排序的對象列表中創建由對組成的“行”

如何從根據其屬性排序的對象列表中創建由對組成的“行”

紫衣仙女 2024-01-04 15:19:51
我創建了一個帶有屬性的類,并根據它們的 x 級別(從 1 到 6)對它們進行排序。然后,我想將列表排序為對,其中具有最高級別“x”的對象和具有最低級別“x”的對象配對在一起,第二個最多和第二個較少,依此類推。如果按照我的方式,它看起來會像這樣,即使對象是不可迭代的。for objects in sortedlist:    i = 0    row(i) = [[sortedlist[i], list[-(i)-1]]    i += 1    if i => len(sortedlist)        break
查看完整描述

1 回答

?
慕工程0101907

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)]


查看完整回答
反對 回復 2024-01-04
  • 1 回答
  • 0 關注
  • 149 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號