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

Python如何按位置对应打印两个等长列表的元素内容

问题说明

需要实现两个等长列表同位置元素配对逐行打印的功能,现有测试列表如下:

name = ['Tyler', 'Daniel', 'Connor', 'Jeff']
number = ['64', '34', '76', '24']

预期输出为同索引位置的姓名、数字逐行对应,格式如下:

Tyler 64
Daniel 34
Connor 76
Jeff 24

之前尝试编写的代码存在语法和逻辑问题,无法得到预期结果:

print(name[i]+" "+number[j] for i in name and for j in number)
可行实现方案

方案1:使用zip()函数(推荐)

Python内置的zip()函数会将多个可迭代对象同位置的元素打包为元组,完全适配等长列表配对的场景,代码最简洁:

name = ['Tyler', 'Daniel', 'Connor', 'Jeff']
number = ['64', '34', '76', '24']

for item_name, item_num in zip(name, number):
    print(item_name, item_num)

运行后直接输出符合要求的结果,print()传入多个参数时默认以空格分隔,不需要手动做字符串拼接。

方案2:索引遍历

如果需要通过下标匹配元素,可以通过range()生成列表长度范围的索引,依次取两个列表同位置的元素打印:

name = ['Tyler', 'Daniel', 'Connor', 'Jeff']
number = ['64', '34', '76', '24']

for i in range(len(name)):
    print(name[i], number[i])

提示:该方案要求两个列表长度完全一致,否则会触发索引越界错误;zip()在列表长度不一致时会以较短的列表长度为准截断配对,不会抛出异常。

原代码问题说明

之前写的代码存在两个核心问题:

  1. 语法错误:推导式/生成器表达式中多循环的写法不需要加and关键字,且嵌套for循环会生成两个列表元素的所有两两组合(笛卡尔积),完全不符合同位置配对的需求
  2. 逻辑错误:直接将生成器对象传入print(),只会打印生成器的对象内存地址,不会迭代输出内部的内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 06:15:35