擅长:python、mysql、java
<p>枚举函数返回迭代器。迭代器的概念描述为<a href="http://anandology.com/python-practice-book/iterators.html" rel="noreferrer">here</a>。在</p>
<p>基本上,这意味着迭代器初始化时指向列表的第一项,然后在每次调用其next()方法时返回列表的下一个元素。在</p>
<p>所以复杂性应该是:</p>
<p>初始化:O(1)</p>
<p>返回下一个元素:O(1)</p>
<p>返回所有元素:n*O(1)</p>
<p>请注意,enumerate不会创建新的数据结构(元组列表或类似的东西)!它只是在现有列表上迭代,并记住元素索引。在</p>
<p>你可以自己试试:</p>
<pre><code># First, create a list containing a lot of entries:
# (O(n) - executing this line should take some noticeable time)
a = [str(i) for i in range(10000000)] # a = ["0", "1", ..., "9999999"]
# Then call the enumeration function for a.
# (O(1) - executes very fast because that's just the initialization of the iterator.)
b = enumeration(a)
# use the iterator
# (O(n) - retrieving the next element is O(1) and there are n elements in the list.)
for i in b:
pass # do nothing
</code></pre>