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

为什么Python中对同一个zip对象第二次转列表会得到空列表

原因说明

Python 3 中 zip() 函数返回的是迭代器对象,而非预先生成的列表,该特性是产生此现象的核心原因,具体逻辑如下:

  • 迭代器属于消耗式的单向遍历对象,内部元素只能被顺序读取一次,遍历完成后迭代器就会被耗尽,不会留存任何元素。
  • 第一次执行 list(result) 时,程序会完整遍历 result 这个zip迭代器的所有配对元素,将其全部转换成列表元素存入 result_list,此时 result 迭代器已经没有剩余元素可供读取。
  • 第二次执行 list(result) 时,程序会从已经耗尽的迭代器末尾尝试读取元素,自然读不到任何内容,最终得到空列表。

解决方案

如果需要多次使用zip配对后的结果,直接在第一次生成时就转为列表存储,后续复用这个列表即可:

number_list = [1,2,3]
str_list = ['one','two','three']

# 生成配对结果后直接转列表留存
result_list = list(zip(number_list, str_list))
# 后续需要多份的话直接复制列表,不需要直接复用result_list即可
result_list2 = result_list.copy()

print(result_list)
print(result_list2)

运行后两次输出就会一致:

[(1, 'one'), (2, 'two'), (3, 'three')]
[(1, 'one'), (2, 'two'), (3, 'three')]

内容的提问来源于stack exchange,提问作者Asir Shahriar Roudra

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 01:57:02