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