Отфильтровывать целые числа из списка кортежей

#python

#питон

Вопрос:

Как я могу отфильтровать следующий список с кортежами внутри только чисел в другой список с целыми числами?

Это мой Список: [(10, '♦️'), (10, '♠️'), (8, '♠️'), (6, '♣️'), (9, '♦️')]

И я хочу получить еще один список с целыми числами: [10, 10, 8, 6, 9]

Ответ №1:

Вам нужно пройти карты, разложить каждую из них по рангу и масти и сохранить только ранг:

 ranks = [rank for (rank, suit) in cards]
 

Ответ №2:

 new_list = [x[0] for x in old_list]
 

см. Руководство по пониманию списков

Ответ №3:

Вы можете использовать понимание вложенного списка с isinstance(n, int ) , чтобы проверить, является ли элемент целым:

 >>> my_list = [(10, '♦️'), (10, '♠️'), (8, '♠️'), (6, '♣️'), (9, '♦️')]

>>> [n for t in my_list for n in t if isinstance(n, int)]
[10, 10, 8, 6, 9]
 

Для получения более подробной информации обратитесь к документу «isinstance».


Если все ваши числа будут иметь 0-й индекс каждого кортежа, то вы можете использовать zip :

 >>> list(zip(*my_list))[0]
(10, 10, 8, 6, 9)