You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何以Pythonic方式将姓名字符串转换为姓名对列表

Python实现姓名对转换方案

输入的姓名字符串是按「名 姓 名 姓」规则空格分隔的结构化文本,只需要按每两个元素为一组拼接,就能得到目标格式的姓名列表。

推荐写法(地道Pythonic,性能最优)

利用迭代器惰性配对,不需要额外生成中间列表,处理超长字符串时内存优势明显:

names = "John Doe Jane Doe John Smith Jane Smith"
# 如果原字符串尾部带误输入的句号、空格,先执行下一行清理
# names = names.rstrip('. ')
part_iterator = iter(names.split())
outs = [f"{first_name} {last_name}" for first_name, last_name in zip(part_iterator, part_iterator)]

执行后得到的outs和预期结果完全一致:

["John Doe", "Jane Doe", "John Smith", "Jane Smith"]

这个写法的原理是:zip会按顺序从传入的迭代器中取值,同一个迭代器传入两次时,会依次消耗元素:第一次取第1个元素作为名,第二次取第2个元素作为姓,下一轮自动取第3、4个元素,刚好完成两两分组。

易读版写法

如果更侧重代码直白、降低理解成本,可以用步长切片的方式实现,适合短字符串场景:

names = "John Doe Jane Doe John Smith Jane Smith"
parts = names.split()
outs = [f"{parts[i]} {parts[i+1]}" for i in range(0, len(parts), 2)]

注意:以上写法默认输入字符串格式完全合规,不存在带空格的多段姓名、缺失名/姓的异常情况,如果输入存在格式噪声,需要额外增加长度校验、异常捕获逻辑。

内容的提问来源于stack exchange,提问作者bigdee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 23:12:17