我正在尝试使用itertools.product从0-9999创建一个数字列表.我可以通过执行以下操作从0000-9999创建一个列表:
numbers = ['0','1','2','3','4','5','6','7','8','9']
itertools.product(numbers,numbers,numbers,numbers)
虽然我想要像0001这样的条目,但我也想获得001、01和1.
包括这些内容的最有效方法是什么?我应该打电话给itertools.product(数字,数字,数字)和itertools.product(数字,数字),然后以某种方式将它们与原始文件合并,还是有一种更干净的方法?
如果我应该再打两个电话并合并,有人可以指出我的做法吗?我尝试使用.append(),但它引发此错误:
'itertools.product' object has no attribute 'append'
谢谢你的帮助.
解决方法:
您可以使用嵌套的listcomp或genexp(出于显示目的,此处将其减小):
>>> numbers = ['0','1','2']
>>> [''.join(p) for n in range(1,4) for p in product(numbers, repeat=n)]
['0', '1', '2', '00', '01', '02', '10', '11', '12', '20', '21', '22', '000', '001', '002', '010', '011', '012', '020', '021', '022', '100', '101', '102', '110', '111', '112', '120', '121', '122', '200', '201', '202', '210', '211', '212', '220', '221', '222']