Skip to main content
 首页 » 编程设计

python之在 python 中使用 if 条件列表理解

2025年05月04日10mfrbuaa

我有一个列表,其中包含 int 和 str 类型的元素。我需要将 int 元素复制到另一个列表。我尝试了一个不起作用的列表理解。我的等效循环正在运行。

input = ['a',1,'b','c',2,3,'c','d'] 
output = [] 
[output.append(a) for a in input if type(a) == int]  

[无,无,无]

循环中的相同逻辑有效。

output = [] 
for a in input: 
    if type(a) == int: 
        output.append(a) 
print(output) 

[1,2,3,]

我能知道是什么造成了不同吗?

请您参考如下方法:

当你在做的时候:

input = ['a',1,'b','c',2,3,'c','d'] 
output = [] 
[output.append(a) for a in input if type(a) == int]  

append 返回 None,所以这就是很多 none 的原因

顺便说一句:

print(output) 

将是期望的结果。

您的逻辑确实有效!

但是使用列表理解作为副作用并不好,所以最好的方法是:

output=[a for a in input if type(a) == int]  

最后最好的是 isinstance:

output=[a for a in input if isinstance(a,int)]