gpt4 book ai didi

python - False 不应被视为 0

转载 作者:太空宇宙 更新时间:2023-11-03 13:07:18 25 4
gpt4 key购买 nike

我必须遍历一个包含随机值的列表,例如

["a",0,0,"b",None,"c","d",0,1,False,0,1,0,3,[],0,1,9,0,0,{},0,0,9]

并将所有零 (0) 移动到列表的末尾,保留其他元素的顺序。这是我的代码:

for i in range(len(array)):
if array[i] ==0 and array[i] is not False:
array.append(array[i])
array.remove(array[i])

return array

代码工作正常,但它将“False”视为 0,因此输出与所需的不匹配。我尝试寻找答案并将它们实现到我的代码中,例如使用"is"和“不是”,但它们似乎对我不起作用。我还能做什么?

我的输出:['a', 'b', None, 'c', 'd', 1, 1, 3, [], 1, 9, {}, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] 但是输出应该是 ['a', 'b', None, 'c', 'd', 1 , 假, 1, 3, [], 1, 9, {}, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

最佳答案

有很多方法可以将零移动到数组的末尾。这是一种迭代列表(根据需要)并避免任何高级 Python 功能的方法。请注意,这使用了一个临时数组,因为在迭代列表时重新排序列表中的项目是一个非常糟糕的主意

array = ["a",0,0,"b",None,"c","d",0,1,False,0,1,0,3,[],0,1,9,0,0,{},0,0,9]

newarray = []
for item in array:
if item != 0 or item is False:
newarray.append(item)
while len(newarray) < len(array):
newarray.append(0)
array = newarray

print(array)

这给出了打印输出

['a', 'b', None, 'c', 'd', 1, False, 1, 3, [], 1, 9, {}, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

如果你想了解为什么 Python 将 False 视为等于 0,你应该了解 FalseTrue code> 是 bool 类型的成员,它是 int 的子类型。换句话说,False 确实是 0 但具有特殊类型。这通常是个好主意,但您发现了一个让事情变得更复杂的案例。

关于python - False 不应被视为 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54606559/

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