從一些元組列表開始。如何根據元組的值排序列表
a = [(10,10),(20,20)]
b = [(15,15),(25,25)]
我們可以使用哪些列表理解創建一個新的列表,其中從a, b
項目是按大小順序?
c = [(10,10),(15,15),(20,20),(25,25)]
從一些元組列表開始。如何根據元組的值排序列表
a = [(10,10),(20,20)]
b = [(15,15),(25,25)]
我們可以使用哪些列表理解創建一個新的列表,其中從a, b
項目是按大小順序?
c = [(10,10),(15,15),(20,20),(25,25)]
你並不需要這樣的理解,你可以簡單地做:
c = a + b
c.sort()
>> [(10, 10), (15, 15), (20, 20), (25, 25)]
甚至更短:
c = sorted(a + b)
>> [(10, 10), (15, 15), (20, 20), (25, 25)]
你或許應該閱讀Sorting HOWTO。特別是關鍵功能部分可能是相關的,這取決於您如何定義「大小」。
from itertools import chain
a = [(10,10),(20,20)]
b = [(15,15),(25,25)]
sorted(chain(a, b))
# [(10, 10), (15, 15), (20, 20), (25, 25)]
爲什麼列表理解?我不知道「大小」是什麼意思,所以我會猜測區域。
c = sorted(a+b, key=lambda x: x[0]*x[1])
如果兩個名單已經在有序...
c = list(heapq.merge(a, b))
否則
c = sorted(itertools.chain(a, b))
+1爲heapq。但是恐怕在這裏介紹heapq就像用激光槍炮射擊蒼蠅。更有效,但如何向他們解釋...... :) – 2013-04-29 13:45:57
@JakubM。 heapq模塊的這種使用雖然非常簡單,但非常高效 – jamylak 2013-04-29 13:49:32
@jamylak:我知道,我知道 – 2013-04-29 13:50:48
什麼是 「大小」?第一個元素?第二個元素?元素的總和? – eduffy 2013-04-29 13:39:32
它是否必須是理解?你有沒有理由不能使用'sort'? '(10,20)'和'(20,10)'有什麼相對順序? – Useless 2013-04-29 13:40:04
你的兩個清單已經訂購了嗎? – jamylak 2013-04-29 13:42:01