我正在寻找一种从Python中的集合中检索(任意)元素的有效方法,并且遇到了这种方法:
anyElement = next(iter(SET))
从容器(如集合)生成迭代器时会发生什么?它是否只是创建一个指向内存中对象位置的指针,并在调用next时移动该指针?或者它将集合转换为列表然后创建一个迭代器?
我主要担心的是,如果是后者,似乎iter()将是O(n)操作。此时,最好只从集合中弹出一个项目,将弹出的项目存储在变量中,然后将弹出的项目重新插入到集合中。
提前感谢您的任何信息!
答案 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__()
的扩展答案!