gpt4 book ai didi

python - 枚举的实现细节是什么?

转载 作者:太空狗 更新时间:2023-10-30 01:49:05 24 4
gpt4 key购买 nike

Python 有 enumerate() 来迭代带有索引的对象。我怀疑解释器创建大量 int 对象的唯一目的是跟踪事物的位置。 PEP page 说了以下内容,但我真的不明白幕后发生了什么:

It provides all iterables with the same advantage that iteritems() affords to dictionaries -- a compact, readable, reliable index notation.

那么这里有什么魔力呢?

最佳答案

enumerate() 是一个迭代器;它只生成索引 int动态;它不会预先生成它们。

您可以尝试阅读 enumobject.c source code ,但它基本上可以像这样翻译成 Python:

def enumerate(iterable, start=0):
count = start
for elem in iterable:
yield count, elem
count += 1

yield 关键字使它成为 generator function ,并且您需要遍历生成器(或对其调用 next())以推进函数以生成数据,一次一个 yield 调用。

Python 还实习 int 值,所有介于 -5 和 256(含)之间的值都是单例,所以上面的代码甚至不会产生新的 int 对象,直到你达到 257。

关于python - 枚举的实现细节是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16808384/

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