2014-01-15 44 views
1

對不起,如果這是一個微不足道的問題。如果我有一個列表:對於Python,如何對固定大小列表中的元素進行排序和包含

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

什麼是有效的方式排序,使所有非零元素,會集中到左側(以任意順序):

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

您是否在使用變量_,或者它只是一個佔位符?這個變量在python中做了一些神奇的事情。 – wim

+0

只是一個佔位符。對此感到抱歉。 –

回答

3

使用的密鑰返回的任何非零較低,像-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)] 

所有非零元組留在原來的順序,只需移動到輸出列表的前面。

3
sorted(my_list, key=(0,0).__eq__) 
相關問題