ak.*_*ak. 17 python reverse generator
我正在寻找一种方法来反转生成器对象.我知道如何反转序列:
foo = imap(seq.__getitem__, xrange(len(seq)-1, -1, -1))
Run Code Online (Sandbox Code Playgroud)
但是,作为输入的发生器和输出的反向发生器(len(seq)保持不变,可以使用原始序列中的值)可能类似吗?
jcd*_*yer 24
您不能以任何通用方式反转生成器,除非将其转换为序列并从中创建迭代器.在计算出先前的生成器之前,不一定知道生成器的后期术语.
更糟糕的是,你不知道你的发电机是否会遇到StopIteration异常,直到你击中它,所以你无法知道你的序列中的第一个术语会是什么.
你能做的最好的事情就是写一个reversed_iterator函数:
def reversed_iterator(iter):
return reversed(list(iter))
Run Code Online (Sandbox Code Playgroud)
编辑:当然,您也可以使用基于imap的迭代版本替换逆转,以保存一个列表创建.
reversed(list(input_generator)) 可能是最简单的方法.
没有办法以"反向"顺序获取生成器的值而不首先将它们全部收集到序列中,因为生成第二项很可能完全依赖于生成的第一项.
| 归档时间: |
|
| 查看次数: |
14114 次 |
| 最近记录: |