我有一个列表,其中包含 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)]
