二进制序列的所有排列列表

List of all permutations of a binary sequence

我需要访问n个连续的节点。从每个节点我都可以选择向左或向右的路径,引导我到下一个节点。我想得到一个列表,列出所有可能的路径排列,这些排列可以引导我从第一个节点到最后一个节点。所以,如果我有两个节点,我想得到:

[[左,左],[左,右],[右,右],[右,左]]

我想我需要使用一些基本的递归函数,但我不能完全理解它。

这里不需要递归。您可以将 itertools.product 与多个 ['Left', 'Right'] 的副本一起使用,例如:

from itertools import product

options = ['Left', 'Right']
N = 3

print(list(product(*(options,)*N)))

给出:

[('Left', 'Left', 'Left'), ('Left', 'Left', 'Right'), ('Left', 'Right', 'Left'), ('Left', 'Right', 'Right'), ('Right', 'Left', 'Left'), ('Right', 'Left', 'Right'), ('Right', 'Right', 'Left'), ('Right', 'Right', 'Right')]

如果您愿意,可以将内部元素转换为列表而不是元组:

print([list(t) for t in (product(*(options,)*N))])

给出:

[['Left', 'Left', 'Left'], ['Left', 'Left', 'Right'], ['Left', 'Right', 'Left'], ['Left', 'Right', 'Right'], ['Right', 'Left', 'Left'], ['Right', 'Left', 'Right'], ['Right', 'Right', 'Left'], ['Right', 'Right', 'Right']]