拆分带有数字列表的字符串

Mil*_*tsj 3 python split list

我正在尝试按列表中给出的位置拆分字符串,并将这些部分添加到新列表中.我开始:

seq = 'ATCGATCGATCG'
seq_new = []
seq_cut = [2, 8 , 10]
Run Code Online (Sandbox Code Playgroud)

我想得到:

seq_new = ['AT', 'CGATCG', 'AT', 'CG'] 
Run Code Online (Sandbox Code Playgroud)

具有位置的列表的大小和值可变.我该如何处理这样的数据?

Ste*_*ski 7

使用zip创建索引的切片:

seq_new = [seq[start:end] for start, end in zip([None] + seq_cut, seq_cut + [None])]
Run Code Online (Sandbox Code Playgroud)

这拉链[None, 2, 8 , 10][2, 8, 10, None]创建索引[(None, 2), (2, 8), (8, 10), (10, None)]. None因为第一个索引默认为零,None因为第二个索引默认为要切片的序列的大小.


orl*_*rlp 5

使用切片:

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:])
Run Code Online (Sandbox Code Playgroud)