python - 在 Python 中多次反转迭代器
问题描述
我试图使用该函数多次反转相同的迭代器reversed
。例如,使用代码:
iterator = range(3)
N = 5
k = 0
out = []
while k < N:
for i in iterator:
out.append(i)
iterator = reversed(iterator)
k += 1
print(out)
我希望/期望有输出:
[0, 1, 2, 2, 1, 0, 0, 1, 2, 2, 1, 0, ... ]
但是,在第一次使用 reverse 之后,我得到了错误:
TypeError: 'range_iterator' object is not reversible
什么是不需要解包迭代器的有效解决方法?
解决方案
您可以简单地交替原始迭代器和反向迭代器。你可以从这个简单的例子开始:
iterator = range(3)
N = 5
k = 0
out = []
while k < N:
if k%2 == 0:
it = iterator
else:
it = reversed(iterator)
for i in it:
out.append(i)
k += 1
print(out)
[0, 1, 2, 2, 1, 0, 0, 1, 2, 2, 1, 0, 0, 1, 2]
推荐阅读
- java - 开源sip客户端手机相关(Peers opensouce)
- c# - task.ScriptingEngine.SaveProjectToStorage() 返回 false
- c# - ItemsControl 的 ListVIew:从 ItemsControl 中选择一项后获取 ListViewItem 索引
- vba - 运行时错误“13”类型不匹配
- ios - 我可以在 iOS AppStore 上显示 2 个或更多开发者名称吗?
- node.js - 如何解析用户在 node/express 中上传的 csv 文件中的数据?
- python - 如何将 python 打包到我的项目中?
- android - 当应用程序从最近的应用程序列表中清除时,后台服务在 android nougat 和 oreo 中停止
- php - 根据另一个表中的存在从表中选择
- c# - 如何将 xml 字符串反序列化为一组 C# 类,而不必仅为 xml 属性声明很多属性?