我想过滤列表,将全部0移动到列表的末尾,其他所有内容都按顺序排列。
所以我列举了列表,并且在一个项目等于0时我想扩展列表然后从索引中删除该项目。我该怎么做?
这是我的代码。
def move_zeros(array):
for index, item in enumerate(array):
if item == 0:
array.extend(item, array.pop(index))
return array
答案 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))