Python 使用map()时,列表索引超出范围
我尝试使用带有1个预先设计的函数和1个参数的map函数。在调用map函数上的list()之前,一切正常。最后它显示了 索引器:列表索引超出范围 但是,当我只调用列表中的函数而不使用map()时,一切正常。有人能帮我识别这个bug吗Python 使用map()时,列表索引超出范围,python,list,dictionary,indexing,split,Python,List,Dictionary,Indexing,Split,我尝试使用带有1个预先设计的函数和1个参数的map函数。在调用map函数上的list()之前,一切正常。最后它显示了 索引器:列表索引超出范围 但是,当我只调用列表中的函数而不使用map()时,一切正常。有人能帮我识别这个bug吗 您的函数split\u title\u和\u name可以在一个人员列表上工作,如果您希望它一次只在一个人身上工作: def split_title_and_name(person): return person.split()[0] + " " + per
您的函数
split\u title\u和\u name
可以在一个人员列表上工作,如果您希望它一次只在一个人身上工作:
def split_title_and_name(person):
return person.split()[0] + " " + person.split()[-1]
这些功能不同。您的函数在人员列表上运行map将该功能应用于人员的每个元素。因此,你在打电话
split_title_and_name('Dr. Christopher Brooks')
split_title_and_name('Dr. Kevyn Collins-Thompson')
...
看到问题了吗?这里有一个更好的解决方案:
people = ['Dr. Christopher Brooks', 'Dr. Kevyn Collins-Thompson', 'Dr. VG Vinod Vydiswaran', 'Dr. Daniel Romero']
def split_title_and_name(person):
title = person.split()[0]
lastname = person.split()[-1]
return '{} {}'.format(title, lastname)
list(map(split_title_and_name, people))
当我使用format函数时,它看起来不那么复杂。以防您打算在“heavylifting”上使用该函数并希望避免重复的拆分调用。。。也许您应该先尝试存储拆分的字符串。。。尝试:-)
你能修好你的压痕吗
map
将每个人都带到地图上,并应用函数split\u title\u和\u name()
split\u title\u and\u name('Dr.Chistopher Brooks')
与发送姓名列表非常不同。您的函数似乎是为直接获取姓名列表而设计的。如果您将map
映射到people
上,它当然会抛出一个错误,因为当您为我本人迭代时,它会迭代单个名称的单个字符。当i
到达空间”
时,split
返回空列表[]
,索引到空列表将抛出索引器
people = ['Dr. Christopher Brooks', 'Dr. Kevyn Collins-Thompson', 'Dr. VG Vinod Vydiswaran', 'Dr. Daniel Romero']
def split_title_and_name(person):
title = person.split()[0]
lastname = person.split()[-1]
return '{} {}'.format(title, lastname)
list(map(split_title_and_name, people))
people = ['Dr. Christopher Brooks', 'Dr. Kevyn Collins-Thompson', 'Dr. VG Vinod Vydiswaran', 'Dr. Daniel Romero']
def split_title_and_name(person):
splitted_string = people.split()
title = splitted_string[0]
lastname = splitted_string[-1]
return '{} {}'.format(title, lastname)
list(map(split_title_and_name, people))