2016-02-29 222 views
0

我为一个简单的问题表示歉意,但我在档案中找不到答案。 我应该如何在较大的列表中对较小的列表进行排序。 例如按Python中的最小/最大列表排序列表

lst=[[1, 2, 3, 4], [5,9,8,7], [9, 0, 1, 2, 3 ]]

应该返回

[1, 2, 3, 4] [5,7,8,9] [ 0, 1, 2, 3,9 ]

我试图用拉姆达 lst.sort(key=lambda x: x.min()) 和分类 lst.sort(key=lambda x: sorted(x)) 但既不工程。你能否指导我一点点。感谢您的指导。

+1

我没有看到问题中的最小/最大要求。 – Jasper

回答

6

保持简单,只需用一个列表理解和排序列表内的列表:

输出:

[[1, 2, 3, 4], [5, 7, 8, 9], [0, 1, 2, 3, 9]] 

因此,相对于你的代码,你可以这样做:

lst = [sorted(x) for x in lst] 
+1

只是在表示法上抱怨,我总是保留'i'作为整数索引,并且在命名一段数据时使用'x'之类的东西。无论如何,只有我的口味,upvoted无论如何。 –

+0

@machineyearning改变了。 :) – idjaw

1

您可以使用列表中理解到每个子列表排序,然后分配给回你的主目录

>>> lst = [sorted(i) for i in lst] 
>>> lst 
[[1, 2, 3, 4], [5, 7, 8, 9], [0, 1, 2, 3, 9]] 
1

你可以尝试这样的事:

lst=[[1, 2, 3, 4], [5,9,8,7], [9, 0, 1, 2, 3 ]] 
for x in lst: 
    x.sort() 

我通过循环和lst整理每个内部列表。

1

你可以这样做:

>>> list(map(sorted, lst)) 
[[1, 2, 3, 4], [5, 7, 8, 9], [0, 1, 2, 3, 9]] 
0

您可以编写一个函数:

def sort_lst(lst): 
    lists = [] 
    for l in lists: 
     l = l[:] 
     l.sort() 
     lists.append(l) 
    return lists 

l = [[1, 2, 3, 6], [1, 2, 5, 6]] 
l.sort(key=lambda x: x.sort()) 
print(l) 
Output: [[1, 2, 3, 6], [1, 2, 5, 6]] 
0

如果你想在地方进行排序,你可以这样做这个:

any(ll.sort() for ll in lst) 

any真的只是在那里沟回的价值,这些都是None;它将返回false。)

相关问题