代码改变世界

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

  丨o聽乄雨o丨  阅读(40)  评论(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 ... 
复制代码

 

相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
历史上的今天:
2017-11-10 ROSETTA使用技巧随笔--蛋白蛋白对接
点击右上角即可分享
微信分享提示