我有一个清单:
['Jack', 18, 'IM-101', 99.9]如何对其进行过滤以仅获取其中的整数??
我试过了
map(int, x)但它会产生错误。
ValueError: invalid literal for int()
with base 10: 'Jack'发布于 2010-12-05 15:35:09
>>> x = ['Jack', 18, 'IM-101', 99.9]
>>> [e for e in x if isinstance(e, int)]
[18]发布于 2016-09-27 20:03:58
如果列表包含格式化为str的整数,则isinstance()解决方案将不起作用。
['Jack', '18', 'IM-101', '99.9']对于这种情况,我想出了以下替代解决方案:
list_of_numbers = []
for el in your_list:
try:
list_of_numbers.append(int(el))
except ValueError:
pass您可以在this post中找到有关此解决方案的更多详细信息,其中包含类似的问题。
发布于 2010-12-05 15:35:00
使用列表理解
>>> t = ['Jack', 18, 'IM-101', 99.9]
>>> [x for x in t if type(x) == type(1)]
[18]
>>> 整数映射(,x)抛出错误
map函数对x的每个元素应用int(t)。
这会抛出一个错误,因为int('Jack')会抛出一个错误。
编辑:
同样,正如sukhbir所说,isinstance是一种更纯粹的检查它是否为整数类型的方法。
https://stackoverflow.com/questions/4357832
复制相似问题