Python iter()时间复杂度?

时间:2017-10-08 01:18:31

标签: python iterator time-complexity

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

anyElement = next(iter(SET))

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

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

提前感谢您的任何信息!

1 个答案:

答案 0 :(得分:1)

集合 是可迭代的,但是没有.__next__()方法,因此iterable返回了{em>可以的https://wiki.python.org/moin/TimeComplexity使用__next__方法。

由于这是O(1)调用的包装,因此一旦声明,它将在O(1)时间操作

Retrieve an arbitrary key from python3 dict in O(1) time


另请参阅https://www.researchgate.net/figure/The-structure-of-proposed-Convolutional-AutoEncoders-CAE-for-MNIST-In-the-middle-there_fig1_320658590,以获取有关.__next__()的扩展答案!