Как отфильтровать список кортежей и распечатать весь кортеж на основе этого выбора - PullRequest
0 голосов
/ 12 января 2020

Я не знаю, имеет ли смысл то, что я сказал. Но вот мой список

g_members=
   [(5, "Tom", "Fisher", "Solicitor", "Yes", 24.33, 40),
    (6, "Jane", "Andrews", "Solicitor", "Yes", 24.33, 40),
    (734, "Timothy", "Anders", "Receptionist", "No", 10.33, 16),
    (63 "Vicky", "Smith", "Receptionist", "No", 10.53, 26),
    (64, "Pam", "Bloggs", "Finance Director", "Yes", 28.33, 40),
    (15, "David", "Ustace", "Accountant", "Yes", 26.33, 40),
  ]

Я хочу отфильтровать список кортежей и распечатать список всех тех, которые содержат «да». так например

     (5,"Tom", "Fisher", "Solicitor", "Yes", 24.33, 40)
     (6, "Jane", "Andrews", "Solicitor", "Yes", 24.33, 40)
     (64, "Pam", "Bloggs", "Finance Director", "Yes", 28.33, 40)
     (15, "David", "Ustace", "Accountant", "Yes", 26.33, 40)

Я не знаю, как бы я go об этом. Любая помощь будет искренне оценена.

Ответы [ 2 ]

2 голосов
/ 12 января 2020

Это было мое решение

for member in g_members:
  if member[4] == 'Yes':
    print(member)

Это работает, получая четвертый индекс каждого кортежа и проверяя, является ли значение «Да». Если это так, то он распечатывает весь кортеж

Это мой результат

(5, 'Tom', 'Fisher', 'Solicitor', 'Yes', 24.33, 40)
(6, 'Jane', 'Andrews', 'Solicitor', 'Yes', 24.33, 40)
(64, 'Pam', 'Bloggs', 'Finance Director', 'Yes', 28.33, 40)
(15, 'David', 'Ustace', 'Accountant', 'Yes', 26.33, 40)
1 голос
/ 12 января 2020

@ AndrejKesely имеет хороший ответ в разделе комментариев на вопрос:

print(*[v for v in g_members if v[4] == 'Yes'], sep='\n')

Он делает то же самое, что и ответ @ Jack, но использует понимание списка и массив распаковка , так что это краткая однострочная.

...