【问题标题】:For Python, how to sort and lump elements in a fixed-sized list对于 Python,如何对固定大小列表中的元素进行排序和汇总
【发布时间】:2014-02-03 23:38:37
【问题描述】:

对不起,如果这是一个微不足道的问题。如果我有一个清单:

inputlist = [(0,0), (_,_), (_,_), (0,0), (0,0), (_,_), (0,0)]

什么是排序它的有效方法,以便所有非零元素集中到左侧(以任何顺序):

sortlist = [(_,_), (_,_), (_,_), (0,0), (0,0), (0,0), (0,0)]

【问题讨论】:

  • 你是故意使用变量_,还是只是一个占位符?这个变量在 python 中做了一些神奇的事情..
  • 只是一个占位符。很抱歉造成混乱。

标签: python list sorting numpy


【解决方案1】:

对任何非零值使用返回较低值的键,例如 -10

sorted(inputlist, key=lambda t: -1 if t != (0, 0) else 0)

这可以简化为:

sorted(inputlist, key=lambda t: t == (0, 0))

因为False排在True之前

演示:

>>> import random
>>> r = lambda: random.randint(1, 10)
>>> inputlist = [(0,0), (r(),r()), (r(),r()), (0,0), (0,0), (r(),r()), (0,0)]
>>> sorted(inputlist, key=lambda t: t == (0, 0))
[(4, 5), (3, 2), (3, 3), (0, 0), (0, 0), (0, 0), (0, 0)]

所有非零元组都按其原始顺序保留,只是移到输出列表的前面。

【讨论】:

    【解决方案2】:
    sorted(my_list, key=(0,0).__eq__)
    

    【讨论】:

      猜你喜欢
      • 2012-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多