Skip to main content
 首页 » 编程设计

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

2025年05月04日15yxwkf

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

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

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

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

请您参考如下方法:

使用为任何非零值返回较低值的键,例如 -1 与 0:

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)] 

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