为了账号安全,请及时绑定邮箱和手机立即绑定

就地在字符串中连接单词

就地在字符串中连接单词

30秒到达战场 2021-03-30 08:35:16
我有一个字符串列表,我想通过制作新的“字符串列表”来连接两个单词。但是,按照我的假设,在运行了一些代码之后,没有任何结果可言。文字= ['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”之前(到现在),但是为了安全起见,我正在扣除指数或头寸。任何线索。
查看完整描述

2 回答

?
千万里不及你

TA贡献1784条经验 获得超9个赞

字符串在python中是不可变的,您应该将串联的结果分配回一个变量:

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

输出:

['A', '123', 'BCR', 'EFRTY', 'RTY', 'B', '123', 'VCR', 'EF', 'B', '123', 'RRR', 'EFRTY', 'RTY']



查看完整回答
反对 回复 2021-04-06
?
POPMUISE

TA贡献1765条经验 获得超5个赞

要加入所有相邻'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:

    if a == 'EF' and b == 'RTY': # found adjacent

       a += b # join

       next(pairs, None) # skip the next a ('RTY')

    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 = 0

while i < len(L):

    if L[i:i+len(seq)] == seq:

        L[pos] = "".join(seq)

        i += len(seq)

    else:

        L[pos] = L[i]

        i += 1

    pos += 1     

del L[pos:]


查看完整回答
反对 回复 2021-04-06
  • 2 回答
  • 0 关注
  • 162 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信