我有这样的序列:
ABCDEFGHIJKL
我想插入字符串:
'-(c0)-' after elements 1 and 3
'-(c1)-' after elements 2 and 4
'-(c2)-' after elements 5 and 6
这是我正在编写的那种代码:
list_seq = list('ABCDEFGHIJKL')
new_list_seq = list('ABCDEFGHIJKL')
start_end = [(1,3), (2,4), (5,6)]
for index,i in enumerate(start_end):
pair_name = '-(c' + str(index) + ')-'
start_index = int(i[0])
end_index = int(i[1])
new_list_seq.insert(start_index, pair_name)
new_list_seq.insert(end_index, pair_name)
print ''.join(new_list_seq)
我想要的输出是:
AB-(c0)-C-(c1)-D-(c0)-E-(c1)-F-(c2)-G-(c2)-HIJKL
(其中c0插入1和3位之后,c1插入2和4位之后,c2插入5和6位之后)。
但是我得到的输出是:
A-(c0)--(c1)-B-(c1)--(c2)--(c2)--(c0)-CDEFGHIJKL
我认为可能的问题是,当我将一个项目合并到字符串中时,索引会发生变化,因此,第一个项目之后的所有后续包含项的位置都不正确?
有人可以解释如何正确执行此操作吗?
答案 0 :(得分:1)
希望有帮助:
s = 'ABCDEFGHIJKL'
res = list()
for nr, sub in enumerate(s):
res.append(sub)
if nr in (1, 3):
res.append('-(c0)-')
elif nr in (2, 4):
res.append('-(c1)-')
elif nr in (5, 6):
res.append('-(c2)-')
res = ''.join(res)
print(res)
# AB-(c0)-C-(c1)-D-(c0)-E-(c1)-F-(c2)-G-(c2)-HIJKL
答案 1 :(得分:1)
基于@ r.user.05apr的一个很好的想法,即一个字符一个字符地逐步遍历整个输入字符串,我想添加一个可能性以将其推广到任意长的start_end
-list中:< / p>
s = 'ABCDEFGHIJKL'
res = list()
for nr, sub in enumerate(s):
res.append(sub)
try:
i = [nr in x for x in start_end].index(True)
res.append('-(c' + str(i) + ')-')
except:
pass
res = ''.join(res)
print(res)
# AB-(c0)-C-(c1)-D-(c0)-E-(c1)-F-(c2)-G-(c2)-HIJK