You need to enable JavaScript to run this app. Python实现按规则从姓名列表生成拼接新列表的方法
优惠活动
大模型
产品
解决方案
定价
更多

Python实现按规则从姓名列表生成拼接新列表的方法

问题根因

你之前的代码思路从一开始就走偏了:全靠固定字符串位置硬切片,完全没考虑每个姓名的实际结构。

  • 代码里string[:3]是切整个字符串的前3个字符,既不是需求要的第一个单词的前4位,长度就对不上
  • 后面的string[7:9]是硬取字符串第7、8位的字符,不管不同姓名的空格位置、单词长度差异,比如john peter的姓从索引5就开始了,切7:9根本取不对姓的内容
  • 从头到尾没做“取第二个单词前3位后反转”的操作,自然达不到需求
落地实现逻辑

别写死固定索引,顺着姓名的拆分结构逐元素处理就行,步骤很简单:

  • 对每个姓名,按空格拆成名、姓两个独立的单词
  • 名的部分直接取前4个字符——Python的切片语法在单词长度不足4的时候会自动取整个单词,不会报错
  • 姓的部分先取前3个字符,再做反转
  • 把两段拼起来收集成新列表就行
可直接运行的代码实现

基础易读版本(逐行带注释):

x = ["angela lopez", "kimmy kardahshian", "frank moses", "john peter"]
result = []
for full_name in x:
    # 拆分姓名为名、姓两个部分
    first_name, last_name = full_name.split()
    # 提取名的前4位
    name_part = first_name[:4]
    # 提取姓的前3位并反转
    surname_part = last_name[:3][::-1]
    # 拼接后加入结果
    result.append(name_part + surname_part)

print(result)

运行后输出的最终列表为:

['angepol', 'kimmrak', 'fransom', 'johnetep']

如果追求更简洁的写法,也可以用列表推导式一行实现,逻辑完全一致:

result = [name.split()[0][:4] + name.split()[1][:3][::-1] for name in x]

小技巧:Python里用[::-1]就可以直接反转字符串,不需要自己写循环遍历倒着拼。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.14 00:15:05