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

为何底层数据一致时两个zip对象却不相等?

为什么内容相同的zip对象直接比较返回False?

zip()函数返回的是迭代器对象,Python中迭代器的相等性判断逻辑是比较对象的身份(内存地址),而非它们生成的内容:

  • 每次调用zip()都会创建一个全新的迭代器实例,哪怕数据源内容完全一致,这两个实例在内存中的地址也是不同的,直接用==比较时自然返回False。你可以通过id()函数验证这一点:
    >>> id(w1)
    140703324501696
    >>> id(w2)
    140703324501824
    

而将迭代器转为list时,list()会完整遍历迭代器的所有元素并收集为列表,此时==比较的是列表的内容,只要元素的顺序和值完全匹配,就会返回True。

另外需要注意:迭代器是一次性的,一旦被遍历(比如转成列表),再次遍历就不会返回任何元素了:

>>> list(w1)  # 第一次遍历获取全部元素
[(1, 4), (2, 5), (3, 6)]
>>> list(w1)  # 第二次遍历无元素返回
[]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 13:55:21