用数字列表拆分字符串
Split a string with list of numbers
我正在尝试根据列表中给定的位置拆分字符串,并将这些部分添加到新列表中。我开始于:
seq = 'ATCGATCGATCG'
seq_new = []
seq_cut = [2, 8 , 10]
我想得到:
seq_new = ['AT', 'CGATCG', 'AT', 'CG']
位置列表的大小和值是可变的。我该如何处理我的数据?
使用切片:
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:])
使用zip
to create indexes for slicing:
seq_new = [seq[start:end] for start, end in zip([None] + seq_cut, seq_cut + [None])]
这会将 [None, 2, 8 , 10]
和 [2, 8, 10, None]
压缩在一起以创建索引 [(None, 2), (2, 8), (8, 10), (10, None)]
。 None
作为第一个索引默认为零,None
作为第二个索引默认为被切片的序列的大小。
我正在尝试根据列表中给定的位置拆分字符串,并将这些部分添加到新列表中。我开始于:
seq = 'ATCGATCGATCG'
seq_new = []
seq_cut = [2, 8 , 10]
我想得到:
seq_new = ['AT', 'CGATCG', 'AT', 'CG']
位置列表的大小和值是可变的。我该如何处理我的数据?
使用切片:
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:])
使用zip
to create indexes for slicing:
seq_new = [seq[start:end] for start, end in zip([None] + seq_cut, seq_cut + [None])]
这会将 [None, 2, 8 , 10]
和 [2, 8, 10, None]
压缩在一起以创建索引 [(None, 2), (2, 8), (8, 10), (10, None)]
。 None
作为第一个索引默认为零,None
作为第二个索引默认为被切片的序列的大小。