Python:如何按数组长度对二维数组进行排序?

5

很抱歉我不得不问,但我找了很久也没找到有用的东西。

问题在于,我有一个数组列表:

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

我希望按照数组长度对“列表”进行排序。

目前为止,我尝试过:

list.sort()

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

list.sort(key=nc)

但是这两个都返回“None”。 我真的很感激你的帮助。 提前致谢!

1
不要将你的问题标记为“[已解决]”,而应该接受帮助你最多的答案。请点击此链接了解如何接受答案:http://stackoverflow.com/help/someone-answers - lvc
4个回答

5

a_list.sort()会对a_list进行原地排序(修改自身)并返回None,因为它是这样设计的。

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

顺便提一句,您的输入数据已经排序了,那么期望的结果是什么?


谢谢Jokester!我一直在使用print(list.sort()...,并且我认为它没有起作用,但实际上它是按照最短到最长的数组进行排序。也许我确实需要睡一会儿了。 - user2388026

4
< p > .sort() 方法可以就地对列表进行排序。像大多数改变对象的方法一样,它返回< code > None ,但是如果您查看列表,您会发现它已经被排序了。如果您想要制作一个已排序的列表的副本,则:
newlist = sorted(original_list, key=len)

我会做的。请注意,您的nc函数虽然是正确的,但比需要的更加复杂。


1
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

这将为您提供一种方法来对数组进行排序。


0

试试这个:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接