生成多个字符串组合
Generating multiple combinations of strings
我有一个包含 n 个字母的字符串列表,例如:
input: ["A", "B", "C", "D"]
我需要做的是创建给定长度的这些字母的所有可能组合,例如如果:
L = 2
output: ["A", "B"], ["A", "C"], ["A", "D"], ["B", "C"], ["B", "D"], ["C", "D"]
L = 3
output: ["A", "B", "C"], ["A", "B", "D"], ["A", "C", "D"], ["B", "C", "D"]
这是您的标准组合,可用于 itertools:
import itertools
characters = "ABCD"
print(list(itertools.combinations(characters, 2)))
print(list(itertools.combinations(characters, 3)))
您会发现在 itertools 中迭代的其他有用函数,例如排列。
您可以简单地使用 itertools 和 permutations。你将你的字符列表和排列的长度传递给它。
import itertools
my_list = ["A", "B", "C", "D"]
print(list(itertools.permutations(my_list, 2)))
# [('A', 'B'), ('A', 'C'), ('A', 'D'), ('B', 'A'), ('B', 'C'), ('B', 'D'), ('C', 'A'), ('C', 'B'), ('C', 'D'), ('D', 'A'), ('D', 'B'), ('D', 'C')]
print(list(itertools.permutations(my_list, 3)))
#[('A', 'B', 'C'), ('A', 'B', 'D'), ('A', 'C', 'B'), ('A', 'C', 'D'), ('A', 'D', 'B'), ('A', 'D', 'C'), ('B', 'A', 'C'), ('B', 'A', 'D'), ('B', 'C', 'A'), ('B', 'C', 'D'), ('B', 'D', 'A'), ('B', 'D', 'C'), ('C', 'A', 'B'), ('C', 'A', 'D'), ('C', 'B', 'A'), ('C', 'B', 'D'), ('C', 'D', 'A'), ('C', 'D', 'B'), ('D', 'A', 'B'), ('D', 'A', 'C'), ('D', 'B', 'A'), ('D', 'B', 'C'), ('D', 'C', 'A'), ('D', 'C', 'B')]
您可以使用 itertools.permutations
来获得指定长度的排列。
from itertools import permutations
print(list(permutations(my_list, L)))
我有一个包含 n 个字母的字符串列表,例如:
input: ["A", "B", "C", "D"]
我需要做的是创建给定长度的这些字母的所有可能组合,例如如果:
L = 2
output: ["A", "B"], ["A", "C"], ["A", "D"], ["B", "C"], ["B", "D"], ["C", "D"]
L = 3
output: ["A", "B", "C"], ["A", "B", "D"], ["A", "C", "D"], ["B", "C", "D"]
这是您的标准组合,可用于 itertools:
import itertools
characters = "ABCD"
print(list(itertools.combinations(characters, 2)))
print(list(itertools.combinations(characters, 3)))
您会发现在 itertools 中迭代的其他有用函数,例如排列。
您可以简单地使用 itertools 和 permutations。你将你的字符列表和排列的长度传递给它。
import itertools
my_list = ["A", "B", "C", "D"]
print(list(itertools.permutations(my_list, 2)))
# [('A', 'B'), ('A', 'C'), ('A', 'D'), ('B', 'A'), ('B', 'C'), ('B', 'D'), ('C', 'A'), ('C', 'B'), ('C', 'D'), ('D', 'A'), ('D', 'B'), ('D', 'C')]
print(list(itertools.permutations(my_list, 3)))
#[('A', 'B', 'C'), ('A', 'B', 'D'), ('A', 'C', 'B'), ('A', 'C', 'D'), ('A', 'D', 'B'), ('A', 'D', 'C'), ('B', 'A', 'C'), ('B', 'A', 'D'), ('B', 'C', 'A'), ('B', 'C', 'D'), ('B', 'D', 'A'), ('B', 'D', 'C'), ('C', 'A', 'B'), ('C', 'A', 'D'), ('C', 'B', 'A'), ('C', 'B', 'D'), ('C', 'D', 'A'), ('C', 'D', 'B'), ('D', 'A', 'B'), ('D', 'A', 'C'), ('D', 'B', 'A'), ('D', 'B', 'C'), ('D', 'C', 'A'), ('D', 'C', 'B')]
您可以使用 itertools.permutations
来获得指定长度的排列。
from itertools import permutations
print(list(permutations(my_list, L)))