2014-04-30 88 views
0

我有以下列表:如何让列表中的每个列表按升序排序?

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

但有一个衬垫,以解决这个问题?

回答

2

这比你的循环好一点:

for sublist in mylist: 
    sublist.sort() 

mylist.sort() 

当然,这改变就地每个子列表。从你的例子来看,它看起来就是你想要的,但我想我应该提及它以防万一。

4

你可以这样做:

sorted(sorted(sublist) for sublist in mylist) 
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]]