python - 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)'删除他们的数据,这样我就不能再次使用它的数据了。为什么会出现这个问题?
解决方案
reversed
返回一个反向迭代器(只能读取一次),而不是一个反向序列(可以重复使用)。如果您想制作任意序列的可重复使用的反转版本,请立即转换为list
(因此您看不到中间迭代器):
>>> a = [1,2,3,4,5]
>>> b = list(reversed(a))
或使用反转切片(也保留原始序列的类型):
>>> a = [1,2,3,4,5]
>>> b = a[::-1]
推荐阅读
- slurm - 从 SLURM 了解 MaxRSS
- python - 多线程:如何停止/编辑单个线程?
- c - Visual Studio 错误:“strcpy_s”:调用的参数太少
- windows - 带有 Unix docker 容器的 Windows 共享卷上的 Git Line Endings 问题
- mysql - 如何使用 TypeORM 列出 MySQL 中现有表中的数据
- google-sheets - 参数必须是一个范围
- php - 使用 PHP 显示用户名或密码反馈消息
- javascript - 无法获取数据库信息以显示到我的网页
- pygame - 从 pymunk 到现实世界的单位
- json - 如何通过密钥访问 JSON 中的数据