Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 如何从集合字典生成可能的组合列表_Python 3.x_List - Fatal编程技术网

Python 3.x 如何从集合字典生成可能的组合列表

Python 3.x 如何从集合字典生成可能的组合列表,python-3.x,list,Python 3.x,List,我是一个初学者,我有下面的代码 def可能枚举(列表): DefaultSymbol=“%” NumDict=[“0”、“1”、“2”、“3”、“4”、“5”、“6”、“7”、“8”、“9”] FinishList=[] 对于列表中的项目: 对于范围内的i(len(NumDict)): _item=item.replace(默认符号,NumDict[i]) FinishList.append(\u项) 返回完成列表 列表=[“AAAA%%”、“BBB%%”、“CC%%C%”] 打印(可能的枚举(

我是一个初学者,我有下面的代码

def可能枚举(列表):
DefaultSymbol=“%”
NumDict=[“0”、“1”、“2”、“3”、“4”、“5”、“6”、“7”、“8”、“9”]
FinishList=[]
对于列表中的项目:
对于范围内的i(len(NumDict)):
_item=item.replace(默认符号,NumDict[i])
FinishList.append(\u项)
返回完成列表
列表=[“AAAA%%”、“BBB%%”、“CC%%C%”]
打印(可能的枚举(列表))
我试图通过将“%”中的每一个替换为每一个可能的NumDict来获得NumDict中的每一个可能的组合

想要的输出:
[AAAA00,AAAA01,AAAA02,AAAA03…,AAAA99]


当前输出:
[AAAA11、AAAA22、aaaaaa33、AAAA、44、AAAA55、AAAA66]
您可以使用
str.replace
计数
参数设置为1。为了获得这些组合,我使用了
str.format
方法

例如:

lst = ["AAAA%%","BBB%%%","CC%%C%"]
output = []

for i in lst:
    n = i.count('%')
    backup = i
    for v in range(10**n):
        i = backup
        for ch in '{:0{n}}'.format(v, n=n):
            i = i.replace('%', ch, 1)
        output.append(i)

# pretty print:
from pprint import pprint
pprint(output)
印刷品:

['AAAA00',
 'AAAA01',
 'AAAA02',
 'AAAA03',

...all the way to:

 'CC99C5',
 'CC99C6',
 'CC99C7',
 'CC99C8',
 'CC99C9']

使用
itertools.product
获取所有可能插入的选项:

导入itertools
l=[“AAAA%%”、“BBB%%”、“CC%%C%”
DefaultSymbol=“%”
NumDict=[“0”、“1”、“2”、“3”、“4”、“5”、“6”、“7”、“8”、“9”]
out=[]
对于l中的s:
n=s.count(默认符号)
prod=itertools.product(NumDict,repeat=n)
对于产品中的p:
tmp=s
对于p中的i:
tmp=tmp.replace(默认符号,i,1)
out.append(tmp)
非常直截了当;对于每个输入列表元素,获取替换次数(计数“%”),使用
itertools.product
计算要插入的所有可能元素,然后迭代所有这些元素(
对于prod中的p
),并一次替换一个(对于p中的i,替换计数设置为1)。

AAAA,44