tae*_*esu 9 python list python-2.7
获取反向列表的长度不起作用:
lst = [1,2,3]
lst = reversed(lst)
print len(lst)
Run Code Online (Sandbox Code Playgroud)
投 TypeError: object of type 'listreverseiterator' has no len()
解决方法是:
lst = [1,2,3]
lst_length = len(lst)
lst = reversed(lst)
print lst_length
# OR
lst = lst[::-1]
print len(lst)
Run Code Online (Sandbox Code Playgroud)
现在我真正的问题是为什么?
简单地反转列表不会改变列表的长度,
那么为什么Python会抛出该异常呢?
小智 14
函数reversed()返回迭代器,而不是实际列表.你不能直接得到迭代器的len()(见这里).您可以使用Extended Slice语法反转列表:
lst_reversed = lst[::-1]
Run Code Online (Sandbox Code Playgroud)
或者将列表反转到位:
lst.reverse()
Run Code Online (Sandbox Code Playgroud)
如果必须使用迭代器,可以先将其转换为列表:
lst_reversed = list(reversed(lst))
Run Code Online (Sandbox Code Playgroud)
通过这些方法中的每一种,len()将按预期工作.
| 归档时间: |
|
| 查看次数: |
4423 次 |
| 最近记录: |