python - 对于 Python,如何对固定大小的列表中的元素进行排序和合并

标签 python list sorting numpy

抱歉,如果这是一个微不足道的问题。如果我有一个列表:

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

什么是一种有效的排序方式,以便所有非零元素都集中在左侧(以任何顺序):

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

最佳答案

使用为任何非零值返回较低值的键,例如 -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)]

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

关于python - 对于 Python,如何对固定大小的列表中的元素进行排序和合并,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21138492/

相关文章:

python - 重启死亡进程的方法

javascript - 如何在 JavaScript 中按字母顺序对数组中的姓氏进行排序和格式化

python - heapq.n 返回结果在原始序列中的最大索引

python - 为什么一些 python 变量是大写的而其他的是小写的?

python - *矢量化*方法来查找每列的最小值索引(不包括所有已找到的索引)

list - Haskell getArgs 类型是 `Char` 而不是 `[Char` ]

python - 如何将列表拆分为更小的列表?

javascript - 在排序 html 元素时使用 jQuery appendTo()

python - python中根据非连续整数、字符和 float 分割字符串

用于列表和 map 的 C++ 容器