二进制序列的所有排列列表
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']]
我需要访问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']]