gpt4 book ai didi

python - 我怎样才能将零移动到列表的末尾而不是在 python 中移动 False

转载 作者:行者123 更新时间:2023-12-02 07:17:05 25 4
gpt4 key购买 nike

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。

最佳答案

出现这种情况是因为您在遍历列表的同时对列表进行操作,以及您已正确识别的问题,即 False == 00 = = 0 在 Python 中都是 True。处理此问题的一种方法如下,使用 is 而不是 == 来检查是否等于 0:

def move_zeros(a):
return [x for x in a if x is not 0] + [x for x in a if x is 0]

print(move_zeros([False,1,0,1,2,0,1,3,"a"]))

输出:

[False, 1, 1, 2, 1, 3, 'a', 0, 0]

请注意,使用 is 来比较整数通常是不安全的,因为超出范围 (-5, 256) 的整数具有彼此不同的 ID (see this question)。然而,在我们的例子中,我们只使用 0,所以上面的解决方案是安全的。

关于python - 我怎样才能将零移动到列表的末尾而不是在 python 中移动 False,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59611048/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com