【发布时间】:2015-05-16 06:50:19
【问题描述】:
我正在尝试按列表中给出的位置拆分字符串,并将这些部分添加到新列表中。我开始:
seq = 'ATCGATCGATCG'
seq_new = []
seq_cut = [2, 8 , 10]
我想得到:
seq_new = ['AT', 'CGATCG', 'AT', 'CG']
位置列表的大小和值是可变的。我怎样才能这样处理我的数据?
【问题讨论】:
我正在尝试按列表中给出的位置拆分字符串,并将这些部分添加到新列表中。我开始:
seq = 'ATCGATCGATCG'
seq_new = []
seq_cut = [2, 8 , 10]
我想得到:
seq_new = ['AT', 'CGATCG', 'AT', 'CG']
位置列表的大小和值是可变的。我怎样才能这样处理我的数据?
【问题讨论】:
【讨论】:
None(就像我刚刚做的那样!:P)
[seq[start:end] for start, end in pairwise(seq_cut)]
pairwise 的实现可以在itertools 文档的配方部分找到。我觉得这里不值得。代码大致相同:seq_new = [seq[start:end] for start, end in pairwise([None] + seq_cut + [None])]
pairwise 的修改版本的前后附加 None,以向用户隐藏这个小细节。
使用切片:
seq = "ATCGATCGATCG"
seq_new = []
seq_cut = [2, 8, 10]
last = 0
for idx in seq_cut:
seq_new.append(seq[last:idx])
last = idx
seq_new.append(seq[last:])
【讨论】: