gpt4 book ai didi

python - heapq.merge : after merge the result of merge, 原合并为空

转载 作者:行者123 更新时间:2023-11-28 20:52:05 38 4
gpt4 key购买 nike

首先我使用heapq.merge创建了a&b的两个结果,但是在mergea&b之后,我发现a的列表是空的。

>>> a=merge([1,2],[3,4])
>>> b=merge([4,5],[6,7])
>>> list(a)
[1, 2, 3, 4]
>>> merge(a,b)
<generator object merge at 0x365c370>
>>> list(a)
[]
>>>

list(a)最后的结果是空的,为什么merge(a,b)会变a呢?

最佳答案

如文档(以及示例中 merge(a,b) 的输出)所示,merge 的结果是一个迭代器。迭代器只能使用一次,您不能重置或倒带它们,即使可以,您的代码也不会这样做。 (当然,对于给定的集合,您可以有多个独立的迭代器,至少在集合支持的情况下)。

前两个 merge 调用返回生成器,第三个调用消耗这些生成器,因此 ab 之后耗尽。 (实际上,list(a) 首先使用 a,因此在该片段中 merge(a, b) 只会看到 的项目>b,但想法是一样的。)它并不意味着,如果你通过例如一个列表,它不会被改变。但是使用迭代器意味着改变它。

关于python - heapq.merge : after merge the result of merge, 原合并为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7545862/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com