繁体   English   中英

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

[英]python: Add list elements based on original indexing (while updating list)

我有这样的序列:

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

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

谁能解释如何正确执行此操作?

希望能帮助到你:

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 

基于@ r.user.05apr的一个很好的想法,即简单地逐字符遍历整个输入字符串char,我想添加一种可能性,以将其概括为任意长的start_end -list:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM