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

Python3中使用map实现zip函数为何陷入无限循环?

自定义zip函数的无限循环问题

我实现了如下自定义zip函数:

def my_zip(*iterables):
    iterators = tuple(map(iter, iterables))
    while True:
        yield tuple(map(next, iterators))

调用my_zip时会陷入无限循环,且持续生成空元组。我原本以为代码会触发StopIteration异常终止循环,但用生成器表达式实现的等价函数my_genexp_zip却能正常运行:

def my_genexp_zip(*iterables):
    iterators = tuple(iter(it) for it in iterables)
    while True:
        try:
            yield tuple(next(it) for it in iterables)
        except:
            print("exception caught!")
            return

想请教两个问题:

  1. 为什么使用map的函数不符合预期?
  2. 若这是map的预期行为,该如何修改my_zip使其与生成器表达式版本的行为一致?

测试代码如下:

print(list(my_genexp_zip(range(5), range(0, 10, 2))))
print(list(my_zip(range(5), range(0, 10, 2))))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 11:08:13