【问题标题】:Python: Sort 2-Dimensional Array by Array length?Python:按数组长度对二维数组进行排序?
【发布时间】:2013-11-29 04:46:08
【问题描述】:

对不起,我不得不问,但我环顾了很长时间,没有发现任何有用的信息。

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

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

我想按“列表”包含的数组长度对“列表”进行排序。

到目前为止我已经尝试过:

list.sort()

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

list.sort(key=nc)

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

【问题讨论】:

  • 不要将您的问题标记为“[已解决]”,而应accept 回答对您帮助最大的问题。

标签: python list sorting


【解决方案1】:

a_list.sort() 结果 a_list 被原地排序(修改自身)并按照设计返回 None

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

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

【讨论】:

  • 谢谢小丑!我一直在使用 print(list.sort()... 我以为它不起作用,但实际上它是从最短到最长的数组排序的。也许我确实需要一些睡眠。
【解决方案2】:

.sort() 方法对列表进行就地排序。与大多数改变对象的方法一样,它返回None,但如果您查看列表,您会发现它 被排序。如果您想制作已排序列表的副本,则:

newlist = sorted(original_list, key=len)

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

【讨论】:

    【解决方案3】:

    试试这个:

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

    【讨论】:

      【解决方案4】:
      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
      

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

      【讨论】:

        猜你喜欢
        • 2021-04-23
        • 2013-08-17
        • 2022-10-06
        • 2020-04-05
        • 1970-01-01
        • 2021-03-30
        • 1970-01-01
        • 2018-06-02
        • 2021-11-24
        相关资源
        最近更新 更多