使用 isinstance 从列表中删除 false 时出现问题

Tyl*_*and 0 python boolean list python-3.x

所以,我正在尝试从 Python 的列表中删除非整数(非常令人兴奋的东西)。我遇到了以下代码的问题,但我似乎无法解决:

list_a = ["a", 1, 2, 3, False, [1, 2, 3]]

for item in list_a:
    if not isinstance(item, int):
        list_a.remove(item)
Run Code Online (Sandbox Code Playgroud)

我试图删除列表中的所有非 int 项目,但上面的代码不会删除 False。

我想要的是:[1, 2, 3]

我得到什么:[1, 2, 3, False]

任何帮助解决这个问题的帮助将不胜感激!

Yan*_*ier 5

你的问题是它以下的子类:bool int

>>> issubclass(bool, int)
True
Run Code Online (Sandbox Code Playgroud)

因此,所有布尔值都是整数(其中 False 为 0,True 为 1),可用于索引等。您可以type(item) is bool改为测试。