使用一个元素替换列表中的多个元素的切片

问题描述 投票:0回答:1

我试图在列表中找到一个可变大小的切片,并将其替换为一个元素:

ls = ['c', 'b', 'c', 'd', 'c']
lt = ['b', 'c']
r = 'bc'

for s,next_s in zip(ls, ls[1:]):
    for t, next_t in zip(lt, lt[1:]):
        if (s, next_s) == (t, next_t):
            i = ls.index(s)
            ii = ls.index(next_s)
            del ls[i]
            del ls[ii]
            ls.insert(i, r)
            print (ls)

这有时只能起作用,产生:

['c', 'bc', 'd', 'c']

但如果lt = ['d', 'c']r = 'dc',它不能产生:

['b', 'c', 'c', 'dc']

如何解决?或者什么是更好的方法来处理这个?

python python-3.x list slice
1个回答
1
投票

可能对您有用的简单方法(取决于lt是否可以多次出现以及该怎么做)。

ls = ['c', 'b', 'c', 'd', 'c']
lt = ['b', 'c']
r = 'bc'

for i in range(len(ls)):
    if ls[i:i+len(lt)] == lt:
        ls[i:i+len(lt)] = [r]
        print(ls)
© www.soinside.com 2019 - 2024. All rights reserved.