找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 4704|回复: 7

[代码与实例] 字符串替换

1

主题

28

帖子

28

积分

贫民

积分
28
cdbclx 发表于 2017-7-18 06:53:26 | 显示全部楼层
本帖最后由 cdbclx 于 2017-7-18 07:01 编辑

如果确定最多只有两种变化,就可以简单些,考虑到可能有更多变化,所以写的复杂了点:

import copy
L=[]
str='12345'
dd={'1':('1','E'),'2':('2','R'),'5':('5','U')}
a=[]
for i in str:
    if i in dd:
        a.append(dd)
    else:
        a.append((i,))

for i in a:
    l=len(i)
    ll=len(L)
    if l>1:
        if ll==0:
            for ii in i:
                L.append([ii])
            
        else:
            for xx in range(l-1):
                for LL in range(ll):
                    L.append(copy.deepcopy(L[LL]))
            for ii in range(l):
               
                for LL in range(ll):
                    L[ii*ll+LL].append(i[ii])
                  
    else:
        if ll==0:
            L.append(i[0])
        else:
            for xxx in range(ll):
                L[xxx].append(i[0])

for i in L:
    print ''.join(i)
   
运行结果:
12345
E2345
1R345
ER345
1234U
E234U
1R34U
ER34U
>>>


回复 支持 反对

使用道具 举报

1

主题

28

帖子

28

积分

贫民

积分
28
cdbclx 发表于 2017-7-18 22:09:02 | 显示全部楼层
本帖最后由 cdbclx 于 2017-7-18 22:11 编辑

不好意思,有个bug,
报错那一行的上面第三行,改成 L.append([i[0]])   少了个方括号,改之前可以支持你举的例子,但是如果第一个字符没有多个变化的话,就有问题了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表