到目前为止,如果我想知道迭代器中有多少次迭代(在我的情况下,文件中有多少蛋白质序列)我做了:
count = 0
for stuff in iterator:
count += 1
print count
Run Code Online (Sandbox Code Playgroud)
但是,我想将迭代器分成两半,所以我需要知道迭代的总量.有没有办法知道没有循环遍历迭代器的迭代量?
Pao*_*tti 10
没有办法知道迭代器将产生多少值而不消耗它直到结束.请注意,迭代器也可以是无限的,因此在这种情况下甚至不会定义总计数.
如果你可以确保迭代器是有限的,那么你要做的就是将它转换为list(using list(iterator)),然后使用通常的列表函数(len,切片)将它分成两半.当然,通过这种方式,所有项目将同时存储在内存中,这在您的情况下可能是可接受的,也可能是不可接受的.
或者,您可以尝试使用自定义迭代器类来跟踪将要生成的项目总数.这是否可行取决于如何获得所述迭代器.
由于迭代器协议只定义了两种方法:
iterator.__iter__()
iterator.next()
Run Code Online (Sandbox Code Playgroud)
答案是否定的,一般情况下,如果不迭代它们,就无法知道有限迭代器中的项目数.
| 归档时间: |
|
| 查看次数: |
209 次 |
| 最近记录: |