def move_zeros(array):
for element in array:
if element == 0 and type(element) is not bool:
array.append(array.pop(array.index(element)))
return array
print(move_zeros([False,1,0,1,2,0,1,3,"a"]))
我的结果是[1, 1, 2, 1, 3, 'a', False, 0, 0]
我不希望False移动,我的程序将False视为0。
def move_zeros(array):对于数组中的元素:如果element == 0并且type(element)不是bool:array.append(array.pop(array.index(element)))返回数组print(move_zeros([ ...
之所以这样,是因为您在循环浏览列表时在列表上进行操作,以及已经正确识别的问题,在Python中False == 0
和0 == 0
均为True
。一种解决此问题的方法如下,使用is
而不是==
来检查与0
的相等性:
您可以将False保存为字符串。则它不被视为0。将您的代码更改为:
更改:
这会在末尾进行“零”的就地改组,从而浪费O(1)空间和O(n)时间复杂度。