Python iter()的时间复杂性?

Python iter()的时间复杂性?,python,iterator,time-complexity,Python,Iterator,Time Complexity,我在Python中寻找一种从集合中检索(任意)元素的有效方法,并遇到了以下方法: anyElement = next(iter(SET)) 当您从容器(如集合)生成迭代器时,会发生什么情况?它只是创建一个指向内存中对象位置的指针,并在调用next时移动该指针吗?还是将集合转换为列表,然后从中创建迭代器 我主要担心的是,如果是后者,似乎iter()将是一个O(n)操作。此时,最好只从集合中弹出一个项目,将弹出的项目存储在变量中,然后将弹出的项目重新插入集合中 感谢您提前提供任何信息 集合是可编辑

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

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

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

感谢您提前提供任何信息

集合是可编辑的,但没有
\uuuuuuuuuuuuuuuuuuuu()
方法,因此,返回一个具有
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuu方法的集合

由于这是一个O(1)调用的包装器,一旦声明,它将在O(1)时间内运行



另请参见
。\uuuu next\uuuu()
上的扩展答案

不,迭代器通常不创建列表。这在文档中有所涉及-啊,我明白了。假设对集合调用next(iter())类似于使用for循环在集合上迭代,然后在第一次迭代后中断,这是否合理?我已经读到当一个iterable被传递到for循环中时会创建一个迭代器,然后循环会继续,直到迭代器有next()。这是合理的,尽管循环会做完全相同的事情,除了更长的键入时间、读取时间和稍慢的速度。需要理解的关键是,在大多数情况下(至少对于标准库中的集合类而言),迭代器实现是由对象本身提供的,因此是有效的。哦,我并不是说使用for循环可以与使用iter()相比(至少在代码简洁性方面)。我只是想确认我对使用iter()概念的理解。谢谢你的回复:)