如何过滤元组列表并根据选择内容打印出整个元组

问题描述 投票:-1回答:2

我不知道我说的话是否有意义。但是这是我的清单

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),
  ]

我想过滤元组列表并打印所有包含'yes'的列表。因此例如

     (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)

我不知道该怎么办。任何帮助将由衷的感谢。

python python-3.x python-2.7
2个回答
2
投票

这是我的解决方法

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

它通过获取每个元组的第四索引并检查值是否为'Yes'来工作。如果是这样,它将打印出整个元组

这是我的结果

(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
投票

@@ AndrejKesely在评论部分对问题的回答很好:

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

它的作用与@Jack的答案相同,但使用list comprehensionarray unpacking,因此它是简洁的一字。

© www.soinside.com 2019 - 2024. All rights reserved.