что делать, если список содержит значения, такие как промежуточные числа в списке, например,list1 = [‘a’, ‘b’, ‘c’, ‘d’, 5,4, 433,»fdff», 44, 2323] содержит значения, такие как 5,4,433

#python #list #list-comprehension

Вопрос:

что делать, если список содержит такие значения, как целые числа в списке, как

 list1 = ['a', 'b', 'c', 'd',5,4,433,"fdff",44,2323] 
 

содержит такие значения, как 5,4,433, так как же их отфильтровать с помощью list comprehensive в python?

Понимание списка Python

Ответ №1:

Вы можете сделать что-то вроде [i for i in list1 if type(i) == int] выделения целых чисел.

Ответ №2:

Вы можете просто сделать:

 list1=['a', 'b', 'c', 'd',5,4,433,"fdff",44,2323] 

list2=[a for a in list1 if isinstance(a, int)]
 

Ответ №3:

Вы также можете попробовать filter с isinstance :

 print(list(filter(lambda x: isinstance(x, int), list_1)))
 

Комментарии:

1. Это плохая практика-использовать одно и то же имя как для входного списка, так и для параметра lambda, в который вводится каждый элемент списка. ОП запрашивает понимание списка, что также обычно считается питоническим подходом по сравнению с фильтром с лямбда-функцией.

2. @blhsing Отредактировал мой ответ… Это была опечатка, когда я публиковал

Ответ №4:

Этого будет достаточно.

 [i for i in list1 if type(i) is int]
 

Или

 [i for i in list1 if str(i).isnumeric()]