gpt4 book ai didi

Python iter() 时间复杂度?

转载 作者:行者123 更新时间:2023-12-03 17:16:15 24 4
gpt4 key购买 nike

我正在寻找一种从 Python 集合中检索(任何)元素的有效方法,并遇到了这种方法:

anyElement = next(iter(SET))

当你从一个容器(比如一个集合)中生成一个迭代器时到底发生了什么?它是否只是创建一个指向内存中对象位置的指针,并在调用 next 时移动该指针?或者它是否将集合转换为列表然后从中创建一个迭代器?

我主要担心的是,如果是后者,似乎 iter() 将是 O(n) 操作。那时最好从集合中弹出一个项目,将弹出的项目存储在一个变量中,然后将弹出的项目重新插入到集合中。

感谢您提前提供任何信息!

最佳答案

集合是可迭代的,但没有 .__next__()方法,所以 iter() is calling the .__iter__() method of the set instance ,返回 iterable确实有 __next__方法。
由于这是 O(1) 调用的包装器,因此一旦声明它将在 O(1) 时间内运行
https://wiki.python.org/moin/TimeComplexity

另见 Retrieve an arbitrary key from python3 dict in O(1) time有关 .__next__() 的扩展答案!

关于Python iter() 时间复杂度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46626669/

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