Python:按数组长度排序二维数组?

时间:2013-11-29 04:46:09

标签: python list sorting

抱歉,我不得不问,但我环顾了一会儿,没有找到任何帮助。

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

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

我想按照它所包含的数组的长度对“list”进行排序。

Sofar我试过了:

list.sort()

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

list.sort(key=nc)

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

4 个答案:

答案 0 :(得分:4)

.sort()方法就地对列表进行排序。像大多数改变对象的方法一样,它返回None,但是如果你查看列表,你会看到已经已经排序了。如果要对已排序的列表进行复制,则:

newlist = sorted(original_list, key=len)

会做到的。请注意,您的nc功能虽然正确,但却比需要的更精细。

答案 1 :(得分:3)

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

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

BTW您的输入数据已经排序,预期结果是什么?

答案 2 :(得分:0)

试试这个:

list = [["I","Am"], ["An","Array", "Within", "An Array"]]
print(sorted(list, key = lambda ele : len(ele), reverse = True))

答案 3 :(得分: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

这将为您提供对数组数组进行排序的方法