Как получить из списка только определенный тип данных?

Я могу получить тип данных int из списка arr следующим кодом:

arr = [1, 'a', 2, 'b']
parsed_arr = []

for value in arr:
    if type(value) == 'int':
        parsed_arr.append(value)

Есть ли способ сделать это проще?


Ответы (2 шт):

Автор решения: MaxU

Воспользуйтесь встроенной функцией isinstance() - это наиболее идиоматический способ:

In [4]: res = [x for x in arr if isinstance(x, int)]

In [5]: res
Out[5]: [1, 2]

isinstance() - может проверять одновременно несколько разных типов:

In [6]: [isinstance(x, (int, float)) for x in [1, 3.14, 'pi']]
Out[6]: [True, True, False]
→ Ссылка
Автор решения: Danis
arr = [1, 'a', 2, 'b']
parsed_arr = list(filter(lambda x: isinstance(x, int), arr))

print(parsed_arr)

Вывод:

[1, 2]
→ Ссылка