从一些元组列表开始。如何根据元组的值排序列表
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