Отфильтровать из списка все, кроме целых чисел
Цель задачи: Создать функцию, принимающую список и возвращающую отфильтрованный список только со значениями, которые имеют тип int.
Ввод:
def filter_list(l):
i = 0
while i != len(l):
if isinstance(l[i],str):
l.pop(i)
i+=1
return l
print(filter_list(['l',12,5,'4','ds']))
Ожидаемый вывод:
[12, 5]
Вывод:
[12, 5, 'ds']
Ответы (2 шт):
Автор решения: MarianD
→ Ссылка
def filter_list(l):
return [element for element in l if type(element) is int]
Вывод команды print(filter_list(['l',12,5,'4','ds'])):
[12, 5]
Объяснение:
[element for element in l if type(element) is int]
это так называемый генератор списка.
Я добавлю пробелы чтобы его разбить на 3 части:
[element for element in l if type(element) is int]
Нужно читать так:
«Для всякого элемент element списка l (средняя часть генератора)...,
...когда он типа int (последняя часть генератора)...,
...добавить элемент element в генерируемый список (первая часть генератора).»
Автор решения: Эникейщик
→ Ссылка
А если заменить на наоборот:
def filter_list(l):
i = len(l)-1
while i >=0:
if isinstance(l[i],str):
l.pop(i)
i -= 1
return l
print(filter_list(['l',12,5,'4','ds']))