在Python中反转列表顺序

时间:2014-02-05 01:27:22

标签: python list

我收到了以下代码:

def two_pair(ranks):
    """If there are two pair, return the two ranks as a
    tuple: (highest, lowest); otherwise return None."""
    pair = kind(2,ranks)
    lowpair = kind(2, list(reversed(ranks)))
    if pair and lowpair != pair:
        return (pair,lowpair)
    else:
        return None

在lowpair变量中,为什么需要说明list()?你为什么不能说reversed(ranks)ranks是一个列表。这是不是已经隐含了?

3 个答案:

答案 0 :(得分:4)

reversed返回迭代器,而不是列表。我们需要将其显式转换为列表,除非我们只想迭代它。

a = [1, 2, 3]
print reversed(a)        # <listreverseiterator object at 0x7fc57d746790>

这就是为什么我们必须使用list来获取实际的反向列表,例如

print list(reversed(a))  # [3, 2, 1]

答案 1 :(得分:0)

reversed(ranks)不是反向列表。它是一个迭代器:

>>> reversed([1, 2, 3])
<listreverseiterator object at 0x0000000001DDE9E8>

list调用是获得反向列表所必需的。

答案 2 :(得分:0)

如果您想要更短的代码,则可以ranks[::-1]代替list(reversed(ranks))

>>> ranks = [1,2,3]
>>> ranks[::-1]
[3, 2, 1]