过滤python中的列表获取整数

Jam*_*s I 7 python

我有一个清单:

['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)


J0A*_*NMM 5

如果该列表包含格式化为整数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)

您可以在这篇文章中找到有关此解决方案的更多详细信息,其中包含一个类似的问题。


小智 5

使用filter

filter(lambda e: isinstance(e, int), x)
Run Code Online (Sandbox Code Playgroud)