假设我有一个列表:[9,0.0,0,9,1,2,0,1,0,1,0.0,3,0,1,9,0,0,0,0,9,False]
,我想将所有零移到最后。
这是我的代码:
def move_zeros(array):
new = [int(x) if x is 0.0 else x for x in array ]
new.sort(key=lambda item: item is 0)
return new
但int(x)
不适用于0.0
而没有第二行,我无法将0.0
移至最后。你能帮我找一下0.0
的解决方案吗?
EDITED
我通过将False
发送到列表
答案 0 :(得分:5)
由于bool
是int
的子类,而False == 0
是True(事实上,sorted
key
函数的成功取决于此),如果您希望将False
视为非零,那么您需要将其添加为另一个条件:
sorted([9,0.0,0,9,1,2,0,1,0,1,0.0,3,0,1,9,0,0,0,0,9,False],
key=lambda x: (x == 0) and x is not False)
产量
[9, 9, 1, 2, 1, 1, 3, 1, 9, 9, False, 0.0, 0, 0, 0, 0.0, 0, 0, 0, 0, 0]