如何将零移动到列表末尾

-4 python python-3.x

我必须创建一个代码(函数),在不使用临时列表的情况下移动列表中的元素,并且该函数必须返回任何内容,我已经尝试了以下方法,但它不起作用,请帮助

def move_zeros_v2(lst):
    left = []
    right = []
    left_a = left.append
    right_a = right.append
    for x in lst:
        if x:
            left_a(x)
        else:
            right_a(x)
    left.extend(right)
    i = 0
    while i < len(left):
        lst[i] = left[i]
        i = i + 1

x = [1, 0, 3, 0, 0, 5, 7]
z=move_zeros_v2(x)
print(x, z)
Run Code Online (Sandbox Code Playgroud)

NPE*_*NPE 5

这是一种方法:

def move_zeros(lst):
  n = len(lst)
  lst[:] = filter(None, lst)
  lst.extend([0] * (n - len(lst)))
Run Code Online (Sandbox Code Playgroud)