使用Python将列表拆分为两个?

时间:2013-01-24 18:44:03

标签: python

我刚开始学习编程,我收到了使用Python的家庭作业的以下问题。我想知道是否有人可以帮助解释我需要做什么

实现将足球运动员列表分成两组的功能分区()。更准确地说,它将一个名字(字符串)列表作为输入,并打印那些名字以A和M之间的字母开头的足球运动员的名字。

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

输出:

Eleanor

Evelyn

Gavin

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

不会打印任何内容。

3 个答案:

答案 0 :(得分: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字符。

答案 1 :(得分: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 :(得分:0)

如果您的分区功能仅打印从“A”到“M”开头的字母,那么partition(['Xena', 'Sammy', 'Owen'])将不会打印任何内容。

这就是导致你的输出为空的原因。