代码改变世界

Bio.SeqIO.parse()一次性迭代器

2023-11-10 17:41  丨o聽乄雨o丨  阅读(35)  评论(0编辑  收藏  举报

Bio.SeqIO.parse()是一次性迭代器,当用下列语句迭代过一次后,再迭代就为空:

1 import Bio
2 filename = "test.fasta"
3 seqs = Bio.SeqIO.parse(filename, "fasta")
4 # 第一次迭代,会正常输出seq id
5 for seq in seqs:
6     print(seq.id)
7 # 第二次迭代,就不会有输出了,因为seqs已经迭代到了末尾 8 for seq in seqs: 9 print(seq.seq)

解决方法为,在读取序列数据时,将seqs转为列表:

 

 1 import Bio 
 2 filename = "test.fasta"
 3 seqs = list(Bio.SeqIO.parse(filename, "fasta"))
 4 # 这样再进行多次迭代,也不会影响数据的分析了
 5 # 第一次迭代,会正常输出seq id
 6 for seq in seqs:
 7     print(seq.id)
 8 
 9 # 第二次迭代,会正常输出seq id
10 for seq in seqs:
11     print(seq.seq)
12 
13 ...