我有一个清单:
['Jack', 18, 'IM-101', 99.9]
Run Code Online (Sandbox Code Playgroud)
如何过滤它只获取它的整数?
我试过了
map(int, x)
Run Code Online (Sandbox Code Playgroud)
但它给出了错误.
ValueError: invalid literal for int()
with base 10: 'Jack'
Run Code Online (Sandbox Code Playgroud)
use*_*312 17
>>> x = ['Jack', 18, 'IM-101', 99.9]
>>> [e for e in x if isinstance(e, int)]
[18]
Run Code Online (Sandbox Code Playgroud)
如果该列表包含格式化为整数str,该isinstance()解决方案是行不通的。
['Jack', '18', 'IM-101', '99.9']
Run Code Online (Sandbox Code Playgroud)
对于这种情况,我想出了以下替代解决方案:
list_of_numbers = []
for el in your_list:
try:
list_of_numbers.append(int(el))
except ValueError:
pass
Run Code Online (Sandbox Code Playgroud)
您可以在这篇文章中找到有关此解决方案的更多详细信息,其中包含一个类似的问题。