【发布时间】:2014-12-14 02:58:40
【问题描述】:
我得到了一个 fasta 格式的原始 dna 序列,然后是几个代表内含子的 dna 序列。我正在尝试区分原始序列,然后将内含子存储在列表中。
这第一部分只是尝试将原始 dna 序列存储在一个字符串中。
data = """>Rosalind_10
ATGGTCTACATAGCTGACAAACAGCACGTAGCAATCGGTCGAATCTCGAGAGGCATATGGTCACATGATCGGTCGAGCGTGTTTCAAAGTTTGCGCCTAG
>Rosalind_12
ATCGGTCGAA
>Rosalind_15
ATCGGTCGAGCGTGT"""
data = data.split()
original = ""
print(data)
data.pop(0)
for x in range(len(data)):
print(data[x])
if data[x][0] == '>':
data.pop(x)
break
else:
original += data.pop(x)
print(data) 返回
['>Rosalind_10', 'ATGGTCTACATAGCTGACAAACAGCACGTAGCAATCGGTCGAATCTCGAGAGGCATATGGTCACATGATCGGTCGAGCGTGTTTCAAAGTTTGCGCCTAG', '>Rosalind_12', 'ATCGGTCGAA', '>Rosalind_15', 'ATCGGTCGAGCGTGT']
正如预期的那样,但随后的print(data[x]) 行返回
ATGGTCTACATAGCTGACAAACAGCACGTAGCAATCGGTCGAATCTCGAGAGGCATATGGTCACATGATCGGTCGAGCGTGTTTCAAAGTTTGCGCCTAG
ATCGGTCGAA
ATCGGTCGAGCGTGT
然后它抛出一个 IndexError。在我看来,for循环以某种方式跳过了数据列表中包含“>”符号的项目,这就是为什么 if 语句不会导致中断发生并且它打印所有项目时它应该只打印原始序列和带有'>'的下一行,然后for循环应该中断。我想知道是否有人可以解释为什么 for 循环会忽略数据列表中具有“>”符号的项目。谢谢
【问题讨论】:
-
所需的输出是否包含所有不以'>'开头的序列的字符串?
-
我想将第一个序列 rosalind10 存储为字符串 original,然后我想将后续序列存储为字符串列表(内含子)