我有一个人的名字列表,我想提取标题和姓氏。我已经编写了以下代码:
people = ['Dr. Christopher Brooks', 'Dr. Kevyn Collins-Thompson', 'Dr. VG Vinod Vydiswaran', 'Dr. Daniel Romero']
def split_title_and_name(person):
for i in person:
title = [i.split(' ')[0] for i in person]
lname = [i.split(' ')[-1] for i in person]
return (title + lname)
我得到的输出是:
['Dr.',
'Dr.',
'Dr.',
'Dr.',
'Brooks',
'Collins-Thompson',
'Vydiswaran',
'Romero']
我想要的结果是这样的:
['Dr.Brooks' , 'Dr.Collins-Thompson' ...]
答案 0 :(得分:0)
标题包含所有名字的列表 lname包含所有姓氏的丢失 似乎您需要进行zip操作
print("Zip:")
for x, y in zip(a, b):
print(x, y)
答案 1 :(得分:0)
只需一次完成所有操作即可,而不是两个单独的列表:
names = [i.split(' ')[0] + i.split(' ')[-1] for i in people]
您正在尝试将两个列表添加在一起-您要做的是在创建列表时将两个字符串添加在一起。如上所述,您可以一行完成所有操作-甚至不需要外部for
循环。
答案 2 :(得分:0)
好像您只需要理解,然后将另一个的第一个和最后一个拉出:
people = ['Dr. Christopher Brooks', 'Dr. Kevyn Collins-Thompson', 'Dr. VG Vinod Vydiswaran', 'Dr. Daniel Romero']
[n[0]+n[-1] for n in [p.split(' ') for p in people]]
>>> ['Dr.Brooks', 'Dr.Collins-Thompson', 'Dr.Vydiswaran', 'Dr.Romero']
您也可以使用正则表达式进行分割,尽管这样做可能会过分杀人
import re
regex = re.compile("\s.+\s")
[''.join(regex.split(s)) for s in people]
>>> ['Dr.Brooks', 'Dr.Collins-Thompson', 'Dr.Vydiswaran', 'Dr.Romero']