我需要切片核苷酸序列列表,例如。 [“ ATGCTGACTGCA”,“ ATGCAGGCGTAG”]根据另外两个列表,一个带有起始密码子,另一个带有终止密码子。
我将所有数据都存储在pandas数据框中,并将其提取到用于序列的np数组中,并将其提取到用于开始和停止的两个列表中。我已经尝试过列表理解:
seq = ["ATGCTGACTGCA", "ATGCAGGCGTAG"]
start = [1, 4]
stop = [6, 12]
[sublist[x:y] for x in start for y in stop for sublist in seq]
我想这会关联所需序列的开始和结束并对片段进行切片,但是结果是一个组合(新列表有8个条目) 我在做什么错了?
答案 0 :(得分:1)
我认为您需要以下两种情况之一:
一个带有zip的嵌套循环,以防您想要获得每个序列的两个子列表:
[sublist[x:y] for x,y in zip(start,stop) for sublist in seq]
具有以下结果:
['TGCTG', 'TGCAG', 'TGACTGCA', 'AGGCGTAG']
或仅包含所有内容的zip:
[sublist[x:y] for x,y,sublist in zip(start,stop,seq)]
获得以下结果:
['TGCTG', 'AGGCGTAG']
答案 1 :(得分:0)
我认为您希望使用zip
而不是嵌套循环。
>>> [s[x:y] for x, y in zip(start, stop) for s in seq]
['TGCTG', 'TGCAG', 'TGACTGCA', 'AGGCGTAG']