Python如何接收多个姓名输入拆分后合并为单个一维列表
问题原因
你当前的代码存在两个核心逻辑问题:
- 循环过程中每次都直接对
name变量重新赋值,之前轮次输入拆分的结果会被直接覆盖,最终打印时只能保留最后一次输入的拆分结果 - 如果直接用
append()方法追加split()的返回值,由于split()执行后返回的本身是存储姓、名的子列表,append()会把整个子列表作为单个元素存入外层列表,最终会生成嵌套的列表结构,无法得到扁平列表。
修复方案
首先在循环外初始化一个空列表作为最终结果的存储容器,每次拆分完单条姓名后,使用extend()方法将拆分得到的姓、名元素逐个追加到结果列表中即可——extend()会把传入序列里的每个元素单独存入列表,不会产生嵌套。
修复后的完整代码:
# 初始化空的扁平结果列表 result = [] inp = int(input("Enter the no.of names")) for i in range(inp): # 拆分当前输入的姓名,得到[名, 姓]格式的临时列表 name_parts = input("Enter the names").split(" ") # 将临时列表的元素逐个加入结果列表 result.extend(name_parts) print(result)
效果验证
当你输入姓名数量为3,依次输入Christiano Ronaldo、Harry Potter、Lionel Messi时,最终打印结果正好符合预期:['Christiano', 'Ronaldo','Harry','Potter', 'Lionel', 'Messi']
如果你习惯用append()方法,也可以拆分后分别追加姓和名两个元素,效果和extend()一致:
for i in range(inp): first_name, last_name = input("Enter the names").split(" ") result.append(first_name) result.append(last_name)
内容的提问来源于stack exchange,提问作者Abhilasha Tripathi
相关产品推荐
相关产品推荐

