我试图在pysam 模块的上下文中理解 Python 的迭代器。通过fetch
在所谓的 AlignmentFile 类上使用该方法,可以获得一个iter
由文件中的记录组成的适当迭代器file
。我可以使用各种方法来访问每条记录(可迭代),例如名称query_name
:
import pysam
iter = pysam.AlignmentFile(file, "rb", check_sq=False).fetch(until_eof=True)
for record in iter:
print(record.query_name)
碰巧记录是成对出现的,所以人们会喜欢这样的东西:
while True:
r1 = iter.__next__()
r2 = iter.__next__()
print(r1.query_name)
print(r2.query_name)
对于数百万条记录,调用next () 可能不是正确的方法,但是如何使用 for 循环在成对的迭代中使用相同的迭代器。我查看了itertools中的 grouper recipe 和 SOs Iterate an iterator by chunks (of n) in Python?[重复](甚至是重复的!)以及以块为单位迭代列表的最“pythonic”方式是什么?但无法让它工作。