我有以下列表:
[[1, 5], [3, 7], [4, 2], [7, 8], [6, 3], [2, 5], [4, 1]]
我正在尝试按照第一个值对它们进行排序,然后使列表按升序排列:
期望的输出:
[[1, 4], [1, 5], [2, 4], [2, 5], [3, 6], [3, 7], [7, 8]]
但是,list.sort()
仅提供以下内容:
>>> mylist = [[1, 5], [3, 7], [4, 2], [7, 8], [6, 3], [2, 5], [4, 1]]
>>> mylist.sort()
>>> mylist
[[1, 5], [2, 5], [3, 7], [4, 1], [4, 2], [6, 3], [7, 8]]
>>>
当然,我总是可以循环列表列表中的每个列表并对其进行排序:
>>> mylist
[[1, 5], [2, 5], [3, 7], [4, 1], [4, 2], [6, 3], [7, 8]]
>>> for k in range(len(mylist)):
... mylist[k] = sorted(mylist[k])
...
>>> mylist
[[1, 5], [2, 5], [3, 7], [1, 4], [2, 4], [3, 6], [7, 8]]
>>> sorted(mylist)
[[1, 4], [1, 5], [2, 4], [2, 5], [3, 6], [3, 7], [7, 8]]
但是有一个班轮可以解决这个问题吗?
答案 0 :(得分:4)
你可以这样做:
sorted(sorted(sublist) for sublist in mylist)
答案 1 :(得分:2)
这比你的循环好一点:
for sublist in mylist:
sublist.sort()
mylist.sort()
当然,这会更改每个子列表就地。从你的例子来看,看起来这就是你想要的,但我想我应该提一下以防万一。
答案 2 :(得分:0)
这是一个就地排序
的班轮>>> mylist = [[1, 5], [3, 7], [4, 2], [7, 8], [6, 3], [2, 5], [4, 1]]
>>> mylist.sort(key=lambda x:x.sort() or x)
>>> mylist
[[1, 4], [1, 5], [2, 4], [2, 5], [3, 6], [3, 7], [7, 8]]