2013-11-29 125 views
2

对不起,我不得不问,但我环顾了很长时间,发现没有什么帮助。Python:按数组长度对二维数组进行排序?

这是问题所在;我有一个数组列表:

list = [["I","Am"], ["An","Array", "Within", "An Array"]] 

我想根据它包含的数组长度对“list”进行排序。

SOFAR我已经试过:

list.sort() 

#and 
def nc(x): 
    return len(x) 

list.sort(key=nc) 

但这些都返回 “无”。 我真的很感谢这个帮助。 提前谢谢!

+1

相反的标记你的问题“[解决]”,你应该[接受](http://stackoverflow.com/help/someone-answers)最能帮助你的答案。 – lvc

回答

3

a_list.sort()结果a_list需要进行排序(自行修改)并按设计返回None

sorted(a_list, key=len)将返回排序列表。

顺便说一句你的输入数据已经排序,预期的结果是什么?

+0

谢谢Jokester!我一直使用print(list.sort()...并且我认为它不起作用,但实际上它正在从最短到最长的数组中排序,也许我需要一些睡眠。 – user2388026

2

.sort()方法就地对列表进行排序。与大多数对对象进行变异的方法一样,它会返回None,但是如果查看列表,您会看到已对进行了排序。如果你想使一个复制多数民众赞成排序,然后将名单:

newlist = sorted(original_list, key=len) 

将做到这一点。请注意,您的nc函数虽然正确,但比需要的更精细。

0

只是试试这个:

list = [["I","Am"], ["An","Array", "Within", "An Array"]] 
print(sorted(list, key = lambda ele : len(ele), reverse = True)) 
0
list_arrays = [["I","Am"], ["An","Array", "Within", "An Array"]] 
list_output = [] 
index = 0 
for i in list_arrays: 
    sorted_array = sorted(list_arrays[index]) 
    list_output.insert(index, sorted_array) 
    index = index + 1 
print list_output 

这会给你的出路数组的数组排序