Как получить из списка только определенный тип данных?
Я могу получить тип данных 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]