Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用map()时,列表索引超出范围_Python_List_Dictionary_Indexing_Split - Fatal编程技术网

Python 使用map()时,列表索引超出范围

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

我尝试使用带有1个预先设计的函数和1个参数的map函数。在调用map函数上的list()之前,一切正常。最后它显示了

索引器:列表索引超出范围

但是,当我只调用列表中的函数而不使用map()时,一切正常。有人能帮我识别这个bug吗



您的函数
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))