Python 按顺序枚举所有选项

Python 按顺序枚举所有选项,python,Python,我有一个问题,对于n字符长字符串中的每个字符,我有两个选项,如下所示: options1 = ['0','0','0','0'] options2 = ['1','1','1','1'] 为简单起见,在本例中,我仅使用“0”或“1”作为选项,字符串长度仅为4个字符,但在我的实际问题中,选项的字符对于它们所属的插槽是完全唯一的,并且字符串的大小可能会有所不同。如何枚举该字符串的所有可能版本?i、 e.我想要以下输出: 0000 0001 0010 0011 0100 0101 0110 0111

我有一个问题,对于n字符长字符串中的每个字符,我有两个选项,如下所示:

options1 = ['0','0','0','0']
options2 = ['1','1','1','1']
为简单起见,在本例中,我仅使用“0”或“1”作为选项,字符串长度仅为4个字符,但在我的实际问题中,选项的字符对于它们所属的插槽是完全唯一的,并且字符串的大小可能会有所不同。如何枚举该字符串的所有可能版本?i、 e.我想要以下输出:

0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1111

这不是一个小bfs无法处理的事情:

def bfs*选项: 字符串=[] 前沿=[,0] 边疆: curr,idx=frontier.pop0 如果idx>=lenoptions[0]: strings.appendcurr 其他: 对于选项中的l: frontier.appendcurr+l[idx],idx+1 返回字符串 res=bfs['0','0','0','0'],['1','1','1'] 印刷品 基本上,bfs会在每个索引上进行选择,从a中选择,或从b中选择。这反过来又会选择每一条可能的路线:

物件: ['0000', '0001', '0010', '0011', '0100', '0101', '0110', '0111', '1000', '1001', '1010', '1011', '1100', '1101', '1110', '1111']
这是一个很好的选择,可以处理两个以上的阵列

这不是小bfs无法处理的:

def bfs*选项: 字符串=[] 前沿=[,0] 边疆: curr,idx=frontier.pop0 如果idx>=lenoptions[0]: strings.appendcurr 其他: 对于选项中的l: frontier.appendcurr+l[idx],idx+1 返回字符串 res=bfs['0','0','0','0'],['1','1','1'] 印刷品 基本上,bfs会在每个索引上进行选择,从a中选择,或从b中选择。这反过来又会选择每一条可能的路线:

物件: ['0000', '0001', '0010', '0011', '0100', '0101', '0110', '0111', '1000', '1001', '1010', '1011', '1100', '1101', '1110', '1111'] 这有一个很好的选项,可以使用两个以上的阵列,使用和选择每对选项:

from itertools import product

for x in map(''.join, product(*zip(options1, options2))):
    print(x)
map.join。。。如果您可以取回所选内容的元组,则不需要使用,但如果您仍希望将其转换回字符串,则可以使用该选项更快、更方便。

使用和跨每对选项进行选择:

from itertools import product

for x in map(''.join, product(*zip(options1, options2))):
    print(x)

map.join。。。如果您可以取回所选内容的元组,则不需要使用,但如果您希望将其转换回字符串,则可以使用它更快、更方便。

也许您正在寻找itertools.product;生成两个列表的所有可能乘积我试过了,但这给了我元素对的所有组合的笛卡尔乘积,我不想要。@Sillydan:它会起作用的,你只需要转换输入:itertools.product*zipoptions1,选项2.看起来您还可以使用python工具:itertools可能您正在寻找itertools.product;生成两个列表的所有可能乘积我试过了,但这给了我元素对的所有组合的笛卡尔乘积,我不想要。@Sillydan:它会起作用的,你只需要转换输入:itertools.product*zipoptions1,选项2.看起来你也可以使用python工具:itertools我接受这个答案,因为这是一个通用的解决方案,也可以在其他语言中使用。具体地说,对于python来说,像其他人所建议的那样使用itertools更有意义我接受这个答案,因为这是一个可以在其他语言中使用的通用解决方案。具体来说,对于python来说,像其他人建议的那样使用itertools更有意义