Python 3.x 删除列表中的0时跳过False

Python 3.x 删除列表中的0时跳过False,python-3.x,Python 3.x,我正在尝试删除列表中包含整数、布尔值和字符串类型数据的所有零。 我知道在python中False的计算结果为0。 但是,从我的列表中删除0时,是否有方法跳过False while 0 in li : li.remove(0) 显然,因为,从: 列表。删除(x) 从列表中删除值为等于x的第一项。如果没有此类项,则会引发ValueError 以及: 使用list.remove使用0也会删除False(反之亦然),使用1也会删除True(反之亦然),因此,现在最好使用列表理解:

我正在尝试删除列表中包含整数、布尔值和字符串类型数据的所有零。 我知道在python中False的计算结果为0。 但是,从我的列表中删除0时,是否有方法跳过False

while 0 in li :
           li.remove(0)
显然,因为,从:

列表。删除(x)

从列表中删除值为等于
x
的第一项。如果没有此类项,则会引发
ValueError

以及:

使用
list.remove
使用
0
也会删除
False
(反之亦然),使用
1
也会删除
True
(反之亦然),因此,现在最好使用列表理解:

li = [i for i in li if type(i) != int or i]
您还可以使用内置功能
过滤器

li = list(filter(lambda i : type(i) != int or i, li))

您可以使用支票类型和0,如下所示

ls=[True,False,0,3,4,“abc”,“xyx”,0,“o”]
[如果(输入(项目)!=int)或(项目!=0),则ls中项目的项目]

当我尝试删除列表中的0时,会出现问题。它消除了错误well@Newbiew9232这显然是
list.remove
的问题,因为它使用相等,其中
0==False
1==True
li = list(filter(lambda i : type(i) != int or i, li))