我收到了以下代码:
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
是一个列表。这是不是已经隐含了?
答案 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]