如何获得列表中每个项目的第一项和最后一项

时间:2019-04-12 01:53:38

标签: python

我有一个人的名字列表,我想提取标题和姓氏。我已经编写了以下代码:

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' ...]

3 个答案:

答案 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']