如何只打印列表中的年龄段的人?

2024-05-16 04:51:28 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我有一个团队列表,我只想打印团队成员的年龄。这是我的代码:

teams = [
[("Mustapha",12),("Olivier",13),("Jean-Paul",10),("Loic",11)],
[("Georges",12),("Sandrine",14),("Alain",13)],
[("Jean-Francois",13),("Armelle",10)]
]

def age(teams):
    for team in teams:
        for member in team:
            for (name,age) in member:
                print(age)

age(teams)

我不断地发现这个错误:

ValueError: too many values to unpack (expected 2)
Traceback (most recent call last):

我不确定每个成员都只有两个值(姓名和年龄),这是怎么回事


Tags: 代码in列表forage成员团队jean
3条回答

使用一个额外的循环,只需执行以下操作:

teams = [
[("Mustapha",12),("Olivier",13),("Jean-Paul",10),("Loic",11)],
[("Georges",12),("Sandrine",14),("Alain",13)],
[("Jean-Francois",13),("Armelle",10)]
]

def age(teams):
    for team in teams:
        for (name,age) in team:
            print(age)

age(teams)

输出:

12
13
10
11
12
14
13
13
10

之所以有一个额外的循环,是因为第一个循环将团队分开,第二个循环将每个人分开,但这意味着下一个循环每次只需迭代两个项目,因此如果需要三个循环,请使用:

teams = [
[("Mustapha",12),("Olivier",13),("Jean-Paul",10),("Loic",11)],
[("Georges",12),("Sandrine",14),("Alain",13)],
[("Jean-Francois",13),("Armelle",10)]
]

def age(teams):
    for team in teams:
        for member in team:
            for age in member[1:]:
                print(age)

age(teams)

不需要第三个循环。代码应该是这样的:

teams = [
    [("Mustapha", 12), ("Olivier", 13), ("Jean-Paul", 10), ("Loic", 11)],
    [("Georges", 12), ("Sandrine", 14), ("Alain", 13)],
    [("Jean-Francois", 13), ("Armelle", 10)],
]


def age(teams):
    for team in teams:
        for member in team:
            print(member[1])


age(teams)

您可以尝试使用列表理解

def age(teams):
    age_list = [age for team in teams for (name,age) in team]
    return age_list


for age in age(teams):
    print(age)

输出

13
10
11
12
14
13
13
10

相关问题 更多 >