python:基于原始索引添加列表元素(同时更新列表)

我有一个这样的序列:


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

我认为可能的问题是,当我将一个项目合并到字符串中时,索引会发生变化,那么第一个之后的所有后续包含的位置都不正确?


谁能解释一下如何正确地做到这一点?


aluckdog
浏览 218回答 2
2回答

白猪掌柜的

基于@ r.user.05apr的一个很好的主意,即一个字符一个字符地遍历整个输入字符串,我想添加一个可能性以将其概括为任意长列表start_end: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:        passres = ''.join(res)        print(res)    # AB-(c0)-C-(c1)-D-(c0)-E-(c1)-F-(c2)-G-(c2)-HIJK

阿晨1998

希望能帮助到你: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 
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python