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

如何创建函数将三个列表(姓名、国籍、年龄)合并为单个列表

问题与解决方案

问题描述

继之前的问题之后,需要创建一个函数,将三个不同列表的输出合并为一个列表的元素,具体要求:

  • 函数接收3个输入参数,对应已有的name、nationality、age三个列表
  • 函数返回合并后的results列表
  • 这三个列表来自已实现的read_information函数:
def read_information(file_name):
    name = []
    nationality = []
    age = []
    with open(file_name) as file:
        for line in file:
            if not line.strip():  # 跳过空行
                continue
            value = line.split(":")[1].strip()
            if line.startswith("Name"):
                name.append(value)
            if line.startswith("Nationality"):
                nationality.append(value)
            if line.startswith("Age"):
                age.append(value)

    return name, nationality, age

示例输入文本

Name       : Anthony Hopkins
Nationality: English
Age        : 23

Name       : Ezequiel Ruiz
Nationality: Spanish
Age        : 39

期望输出

["English Anthony Hopkins 23", "Spanish Ezequiel Ruiz 39"]

错误尝试代码

def order_information(nationality, name, age):
   
   name = []
   nationality = []
   age = []
   results= []
    
   with open("information.txt") as file:
       for line in file:
           if not line.strip():  # skips empty line
               continue
           value = line.split(":")[1].strip()
           if line.startswith("Name"):
               name.append(value)
           if line.startswith("Nationality"):
               nationality.append(value)
           if line.startswith("Age"):
               age.append(value)
    
    for name, nationality, age in results:
        results = nationality + name + age

    return results

解决方案

你的代码存在几个关键问题:

  1. 函数参数是传入的三个列表,但你在函数内部重新定义了空列表,直接覆盖了传入的参数
  2. 无需在这个合并函数中再次读取文件,因为输入已经是read_information返回的处理好的列表
  3. 合并逻辑错误,没有正确遍历三个列表的对应元素进行拼接

正确的合并函数写法如下:

def order_information(nationality, name, age):
    results = []
    # 使用zip同时遍历三个列表的对应位置元素
    for ntl, nm, ag in zip(nationality, name, age):
        # 按要求格式拼接字符串并添加到结果列表
        results.append(f"{ntl} {nm} {ag}")
    return results

使用示例

# 先调用读取函数获取三个列表
names, nationalities, ages = read_information("information.txt")
# 调用合并函数得到最终结果
final_results = order_information(nationalities, names, ages)
print(final_results)
# 输出结果:['English Anthony Hopkins 23', 'Spanish Ezequiel Ruiz 39']

内容的提问来源于stack exchange,提问作者Learning one step at a time

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 07:35:19