擅长:python、mysql、java
<p>除了迭代iterable并计算迭代次数之外,不。这就是为什么它是iterable而不是list。这甚至不是python特有的问题。看看经典的链表数据结构。查找长度是一个O(n)操作,涉及迭代整个列表以查找元素的数量。</p>
<p>如上所述,您可以将您的功能减少到:</p>
<pre><code>def count_iterable(i):
return sum(1 for e in i)
</code></pre>
<p>当然,如果您定义自己的iterable对象,那么您始终可以自己实现<code>__len__</code>,并在某个地方保留一个元素计数。</p>