首页 > 解决方案 > Python“反转”函数返回对象与“列表”函数不能正常工作

问题描述

当我使用 'reversed' 函数返回对象和 'list' 函数来制作列表时,它会删除它们的元素。

>>> a = [1,2,3,4,5]
>>> b = reversed(a)
>>> b
<list_reverseiterator object at 0x000001D9059A6438>
>>> c = list(b)
>>> c
[5, 4, 3, 2, 1]
>>> c
[5, 4, 3, 2, 1]
>>> list(b)
[]

第二个'list(b)'删除他们的数据,这样我就不能再次使用它的数据了。为什么会出现这个问题?

标签: python

解决方案


reversed返回一个反向迭代器(只能读取一次),而不是一个反向序列(可以重复使用)。如果您想制作任意序列的可重复使用的反转版本,请立即转换为list(因此您看不到中间迭代器):

>>> a = [1,2,3,4,5]
>>> b = list(reversed(a))

或使用反转切片(也保留原始序列的类型):

>>> a = [1,2,3,4,5]
>>> b = a[::-1]

推荐阅读