擅长:python、mysql、java
<p>这是因为,在大多数情况下,Django querysets似乎就是这样,<code>reversed</code>不生成列表,而是生成迭代器:</p>
<pre><code>>>> reversed([1,2,3])
<list_reverseiterator object at 0x7f3ba766cc50>
</code></pre>
<p>迭代器是不可下标的。更确切地说:它没有<code>__getitem__</code>方法。你知道吗</p>
<p>因此,这将不起作用:</p>
<pre><code>>>> reversed([1,2,3])[0]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'list_reverseiterator' object is not subscriptable
</code></pre>
<p>但这将(在访问项之前从迭代器创建一个列表):</p>
<pre><code>>>> list(reversed([1,2,3]))[0]
3
</code></pre>