如何用Python将列表分成两部分?
我刚开始学习编程,老师给我布置了一个用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字符。