将所有零移动到列表的末尾(找不到0.0的解决方案)

Dan*_*mov 1 python sorting type-conversion

假设我有一个列表:[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 
Run Code Online (Sandbox Code Playgroud)

但是int(x)不能为0.0没有第二行而工作我无法移动0.0到最后.能帮我找到解决方案0.0吗?

EDITED

我通过eding False到列表更新了原始帖子

unu*_*tbu 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)
Run Code Online (Sandbox Code Playgroud)

产量

[9, 9, 1, 2, 1, 1, 3, 1, 9, 9, False, 0.0, 0, 0, 0, 0.0, 0, 0, 0, 0, 0]
Run Code Online (Sandbox Code Playgroud)