如何用Python将列表分成两部分?

-2 投票
3 回答
1043 浏览
提问于 2025-04-17 13:33

我刚开始学习编程,老师给我布置了一个用Python完成的作业。我想知道有没有人能帮我解释一下我需要做什么。

要实现一个叫做partition()的函数,这个函数的作用是把一组足球运动员的名字分成两组。具体来说,它需要接收一个包含名字(字符串)的列表作为输入,然后打印出那些名字以字母A到M(包括A和M)开头的足球运动员的名字。

partition([‘Eleanor’, ‘Evelyn’, ‘Sammy’, ‘Owen’, ‘Gavin’])

输出结果:

Eleanor

Evelyn

Gavin

partition([‘Xena’, ‘Sammy’, ‘Owen’])

不打印任何内容。

相关问题:

3 个回答

0

如果你的分区函数只打印以字母'A'到'M'开头的名字,那么像 partition(['Xena', 'Sammy', 'Owen']) 这样的调用就不会打印任何内容。

这就是为什么你的输出是空的原因。

0

在这种情况下,我建议不要使用分区。试试下面的代码:

import re
players = ['Eleanor', 'Evelyn', 'Sammy', 'Owen', 'Gavin']
am_players = filter(lambda p: re.match('^[A-M].*',p,re.I), players)
nz_players = filter(lambda p: re.match('^[N-Z].*',p,re.I), players)
2

根据你具体的问题定义,你可能需要找一些像这样的东西:

def partition(l):
    return [firstname for firstname in l
            if firstname[0].lower() in 'abcdefghijklm']

def partition2(l):
    return [firstname for firstname in l
            if 'a' <= ord(firstname[0].lower())
               and ord(firstname[0].lower()) <= 'm']

请注意,这些只严格匹配'A'到'M'之间的ASCII字符。

撰写回答