Python 如何使列表列表中的每个列表按升序排序?

Python 如何使列表列表中的每个列表按升序排序?,python,list,sorting,Python,List,Sorting,我有以下清单: [[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

我有以下清单:

[[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]]
但是有没有一种方法可以解决这个问题呢?

您可以:

sorted(sorted(sublist) for sublist in mylist)
你可以做:

sorted(sorted(sublist) for sublist in mylist)

这比您的循环要好一点:

for sublist in mylist:
    sublist.sort()

mylist.sort()

当然,这会更改每个子列表。从你的例子来看,这似乎是你想要的,但我想我应该提到它以防万一。

这比你的循环要好一点:

for sublist in mylist:
    sublist.sort()

mylist.sort()

当然,这会更改每个子列表。从你的例子来看,这似乎是你想要的,但我想我应该提到它以防万一。

这里有一个一行程序,可以进行适当的排序

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

这里有一个一行程序,可以在适当的位置进行排序

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