如果符合条件,Python会在列表上扩展和弹出

时间:2017-07-07 01:47:56

标签: python

我想过滤列表,将全部0移动到列表的末尾,其他所有内容都按顺序排列。

所以我列举了列表,并且在一个项目等于0时我想扩展列表然后从索引中删除该项目。我该怎么做?

这是我的代码。

def move_zeros(array):
    for index, item in enumerate(array):
        if item == 0:
            array.extend(item, array.pop(index))
    return array

1 个答案:

答案 0 :(得分:4)

您可以制作两个列表并附加

def move_zeros(array):
    l1 = [v for v in array if v != 0]
    l2 = [v for v in array if v == 0]
    return l1 + l2
这样,你保持订单,并且通过创建新列表,你不要修改列表,这通常不是一个好主意

如果使用列表推导创建l2,还应该生成一个零数组,只需生成一个零数组,其长度等于从原始数组的长度和l1

的长度中得到的0的数量
l2 = [0] * (len(array) - len(l1))