我有一个列表:
['Jack', 18, 'IM-101', 99.9]
如何筛选得到整数?
我试过:
map(int, x)
但它会报错。
ValueError: invalid literal for int()
with base 10: 'Jack'
['Jack', 18, 'IM-101', 99.9]
如何筛选得到整数?
我试过:
map(int, x)
但它会报错。
ValueError: invalid literal for int()
with base 10: 'Jack'
>>> x = ['Jack', 18, 'IM-101', 99.9]
>>> [e for e in x if isinstance(e, int)]
[18]
如果列表中包含格式为 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
您可以在此帖子中找到更多关于这个解决方案的细节,该帖子包含一个类似的问题。
>>> t = ['Jack', 18, 'IM-101', 99.9]
>>> [x for x in t if type(x) == type(1)]
[18]
>>>
map(int, x) 抛出错误
map函数将int(t)应用于x的每个元素。
这会抛出一个错误,因为int('Jack')会抛出一个错误。
[编辑:]
另外,使用isinstance检查它是否为整数类型是更纯粹的方式,正如sukhbir所说。
isinstance
比将type
进行比较更加明确。在我看来,这是一个平衡点。 - Karl Knechtel