'False' 从列表中删除其他元素时从列表中删除
'False' is removed from the list when removing other elements from list
我编写了一个函数来从具有不同数据类型的元素列表中删除所有零。但是在删除零的同时。布尔值 'False' 也被删除。但是当我将它更改为 'True' 时,它并没有被删除。我尝试了很多不同的方法来做到这一点,但结果是一样的。
def move_zeros(array):
for i in range(array.count(0)):
array.remove(0)
print(array)
move_zeros([0,1,None,2,False,1,0])
输出为
[1, None, 2, 1]
如何在不删除 'False' 值的情况下执行此操作?
False和True分别等于0和1。如果你想从列表中删除 0 而不删除 False,你可以这样做:
my_list = [0,1,None,2,False,1,0]
my_list_without_zero = [x for x in my_list if x!=0 or x is False]
由于 False
是单个对象,您可以使用 is
来检查某个值是否是该特定对象。
您可以试试这个代码:
def move_zeros(array):
for i in array:
if (type(i) is int or type(i) is float) and i == 0:
addr = array.index(i)
del(array[addr])
return array
这会遍历数组中的所有项目,然后检查它是整数还是浮点数,如果等于 0,则将其删除。 False 被删除的原因是因为 False 在存储在程序中时计算为 0。
你可以试试这个:
def move_zeros(array):
array = [x for x in array if x is False or x!=0]
print(array)
move_zeros([0,1,None,2,False,1,0])
或者你可以试试这个:
def move_zeros(array):
newarray = []
for x in array:
if x is False or x!=0:
newarray.append(x)
print(newarray)
move_zeros([0,1,None,2,False,1,0])
在 运行 之后你应该得到 [1, None, 2, False, 1]
我编写了一个函数来从具有不同数据类型的元素列表中删除所有零。但是在删除零的同时。布尔值 'False' 也被删除。但是当我将它更改为 'True' 时,它并没有被删除。我尝试了很多不同的方法来做到这一点,但结果是一样的。
def move_zeros(array):
for i in range(array.count(0)):
array.remove(0)
print(array)
move_zeros([0,1,None,2,False,1,0])
输出为
[1, None, 2, 1]
如何在不删除 'False' 值的情况下执行此操作?
False和True分别等于0和1。如果你想从列表中删除 0 而不删除 False,你可以这样做:
my_list = [0,1,None,2,False,1,0]
my_list_without_zero = [x for x in my_list if x!=0 or x is False]
由于 False
是单个对象,您可以使用 is
来检查某个值是否是该特定对象。
您可以试试这个代码:
def move_zeros(array):
for i in array:
if (type(i) is int or type(i) is float) and i == 0:
addr = array.index(i)
del(array[addr])
return array
这会遍历数组中的所有项目,然后检查它是整数还是浮点数,如果等于 0,则将其删除。 False 被删除的原因是因为 False 在存储在程序中时计算为 0。
你可以试试这个:
def move_zeros(array):
array = [x for x in array if x is False or x!=0]
print(array)
move_zeros([0,1,None,2,False,1,0])
或者你可以试试这个:
def move_zeros(array):
newarray = []
for x in array:
if x is False or x!=0:
newarray.append(x)
print(newarray)
move_zeros([0,1,None,2,False,1,0])
在 运行 之后你应该得到 [1, None, 2, False, 1]