首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何获取列表中每一项的第一项和最后一项

如何获取列表中每一项的第一项和最后一项
EN

Stack Overflow用户
提问于 2019-04-12 09:53:38
回答 3查看 55关注 0票数 0

我有一个人名列表,我想提取头衔和姓氏。我写了以下代码:

代码语言:javascript
复制
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)

我得到的输出是:

代码语言:javascript
复制
['Dr.',
 'Dr.',
 'Dr.',
 'Dr.',
 'Brooks',
 'Collins-Thompson',
 'Vydiswaran',
 'Romero']

我想要的结果是这样的:

代码语言:javascript
复制
['Dr.Brooks' , 'Dr.Collins-Thompson' ...]
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-04-12 10:01:34

title包含所有名字的列表,lname包含所有姓氏的los,看起来您需要一个zip操作

代码语言:javascript
复制
print("Zip:")
for x, y in zip(a, b):
    print(x, y)
票数 0
EN

Stack Overflow用户

发布于 2019-04-12 10:04:07

而不是两个单独的列表,只需一次完成所有操作:

代码语言:javascript
复制
names = [i.split(' ')[0] + i.split(' ')[-1] for i in people] 

这样做的方法是,您尝试将两个列表添加到一起-您想要的是在创建列表时将这两个字符串添加到一起。如上所述,您可以在一行中完成所有这些操作--外部for循环甚至不是必需的。

票数 0
EN

Stack Overflow用户

发布于 2019-04-12 10:04:24

看起来你只需要拆分一个理解,然后在另一个理解中拔出第一个和最后一个:

代码语言:javascript
复制
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']

您也可以使用正则表达式进行拆分,尽管这样做可能有些夸张:

代码语言:javascript
复制
import re
regex = re.compile("\s.+\s")
[''.join(regex.split(s)) for s in people]

>>> ['Dr.Brooks', 'Dr.Collins-Thompson', 'Dr.Vydiswaran', 'Dr.Romero']
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55643394

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档