Python 反向查询集/列表,然后切片

Python 反向查询集/列表,然后切片,python,django,Python,Django,对于标记为重复的人:这不是因为我有一套2个特定的目标,按照特定的顺序制定。在另一个问题中,它只需要反转,这稍微简单一点。感谢您抽出时间阅读。 我有一个Django queryset,用更简单的术语来说,它似乎是列表的扩展(如果我错了,请纠正我) 我需要: 反转查询集或列表,然后 切分名单 我是以以下形式进行的: 反向返回(querySet)[:20] 然而,由于某种原因,我现在得到了以下错误: “'reversed'对象不可下标” 我很容易做到: 返回查询集[:20:-1] 但这会导致列表先被切

对于标记为重复的人:这不是因为我有一套2个特定的目标,按照特定的顺序制定。在另一个问题中,它只需要反转,这稍微简单一点。感谢您抽出时间阅读。

我有一个Django queryset,用更简单的术语来说,它似乎是列表的扩展(如果我错了,请纠正我)

我需要:

  • 反转查询集或列表,然后
  • 切分名单
  • 我是以以下形式进行的:

    反向返回(querySet)[:20]

    然而,由于某种原因,我现在得到了以下错误:

    “'reversed'对象不可下标”

    我很容易做到:

    返回查询集[:20:-1]

    但这会导致列表先被切片,然后再向后排序

    因此,我正在寻找下一个最好的黑客方式来实现这一点的过程中


    但是当我找到它的时候,我想知道你最好的方法是什么?

    这是因为,在大多数情况下,Django querysets似乎就是这样,
    reversed
    不会生成列表,而是生成迭代器:

    >>> reversed([1,2,3])
    <list_reverseiterator object at 0x7f3ba766cc50>
    
    但这将(在访问项之前从迭代器创建一个列表):


    这是因为,在大多数情况下,Django QuerySet似乎就是这样,
    reversed
    不会生成列表,而是生成迭代器:

    >>> reversed([1,2,3])
    <list_reverseiterator object at 0x7f3ba766cc50>
    
    但这将(在访问项之前从迭代器创建一个列表):

    Queryset.reverse()

    querySet.reverse()

    querySet.reverse()[:20]
    应该可以

    >>> list(reversed([1,2,3]))[0]
    3