猿问

就地在字符串中连接单词

我有一个字符串列表,我想通过制作新的“字符串列表”来连接两个单词。但是,按照我的假设,在运行了一些代码之后,没有任何结果可言。


文字= ['A','123','BCR','EF','RTY','B','123','VCR','EF','B','123','RRR' ,'EF','RTY']


代码


for k in range(0,len(text)):

        a = [i for i,x in enumerate(text) if x == "EF"]

        b = [i for i,x in enumerate(text) if x == "RTY"]

        for l in range(0,len(a)):

            for m in range(0,len(b)):

                if a[l] == b[m] - 1 :

                    text[a[l]] = text[a[l]]+text[b[m]]

如您所见,“ EF”始终在“ RTY”之前(到现在),但是为了安全起见,我正在扣除指数或头寸。任何线索。


30秒到达战场
浏览 163回答 2
2回答

千万里不及你

字符串在python中是不可变的,您应该将串联的结果分配回一个变量:text[a[l]] = text[a[l]]+text[b[m]]输出:['A', '123', 'BCR', 'EFRTY', 'RTY', 'B', '123', 'VCR', 'EF', 'B', '123', 'RRR', 'EFRTY', 'RTY']

POPMUISE

要加入所有相邻'EF','RTY'在列表中不重叠的对:L = ['A','123','BCR','EF','RTY','B','123','VCR','EF','B','123','RRR','EF','RTY']result = []pairs = iter(zip(L, L[1:]+['']))for a, b in pairs:&nbsp; &nbsp; if a == 'EF' and b == 'RTY': # found adjacent&nbsp; &nbsp; &nbsp; &nbsp;a += b # join&nbsp; &nbsp; &nbsp; &nbsp;next(pairs, None) # skip the next a ('RTY')&nbsp; &nbsp; result.append(a)L[:] = result # modify inplace# -> ['A','123','BCR','EFRTY','B','123','VCR','EF','B','123','RRR','EFRTY']支持两个以上的单词:seq = ["EF", "RTY", "B"]pos = i = 0while i < len(L):&nbsp; &nbsp; if L[i:i+len(seq)] == seq:&nbsp; &nbsp; &nbsp; &nbsp; L[pos] = "".join(seq)&nbsp; &nbsp; &nbsp; &nbsp; i += len(seq)&nbsp; &nbsp; else:&nbsp; &nbsp; &nbsp; &nbsp; L[pos] = L[i]&nbsp; &nbsp; &nbsp; &nbsp; i += 1&nbsp; &nbsp; pos += 1&nbsp; &nbsp; &nbsp;del L[pos:]
随时随地看视频慕课网APP

相关分类

Python
我要回答