我想编写一段代码来制作看起来像这样的列表
result = [['a','a','a','a'],
['a','a','a','b'],
....
以此类推。
到目前为止,我还是尝试用三个列表来做到这一点。
lst = ['a' for x in range(num)]
item_lst = [[None,None] for x in range(num)]
char_lst = string.printable
我目前的计划是使item_lst成为lst的索引,其中,item_lst [0]是lst中的位置,而item_lst [1]是char_lst中的位置。
在代码的后面,将有一个for循环,根据item_lst的指令将lst中的字符替换为char_lst中的字符。
我想知道你
A)知道一种循环完成我的思想的方法
或
B)有更好的方法
最后,目标是创建一个列表,列出每个可打印字符,并在给定长度下以每种可能的配置进行打印。
答案 0 :(得分:1)
解决方案非常简单:
import itertools
import string
num = 4
result = list(itertools.product(*([string.printable] * num)))
但是,该列表会很长 ,因此这可能不是您想要的。具体来说,您将拥有一个包含100000000个元素的列表(包含100个可打印元素和num=4
)。您应该使用生成器,而不是列表:
for lst in itertools.product(*([string.printable] * num)):
# do something with lst