不寻常的排列
Unusual permutations
我的列表很少:
a = [1,2,3]
b = [4,5,6]
c = [7,8,9,10]
如何生成所有组合,例如:
a[0], b[0]
a[1], b[1]
a[2], b[2]
a[0], b[0], c[0]
a[1], b[1], c[0]
a[2], b[2], c[0]
a[1], b[1], c[1]
a[2], b[2], c[2]
a[0], b[0], c[3]
a[1], b[1], c[3]
a[2], b[2], c[3]
.....
每个列表中一次只能有一个值。
假设有两个或更多列表,比如 a=[1,2,3] 和 b=[4,5,6] 和 c=[7,8,9] 我想要所有可能的对,例如 (a [0], b[0]),(a[1], b[1]), (a[0], b[0], c[0])...
不确定我是否理解正确你的问题,但你是这个意思吗?
from itertools import permutations
my_list = ['a1', 'a2', 'a3', 'b1', 'b2', 'c1']
for i in range(len(my_list)):
print(list(permutations(my_list, i)))
根据您的示例,您似乎只需要 abc
类型的排列。因此,您可以:1) 显式构建 "permutations",或者 2) 构建所有排列并过滤掉不需要的排列。
显式构造
- 构建您的
list_of_lists
,即 [['a1', 'a2', 'a3'], ['b1', 'b2'], ['c1']]
- 建立你的排列。使用
itertools.product
,参见 All combinations of a list of lists
- 在每个排列中,您可能希望在一个循环中创建多个排列。例如,从
('a1','b1','c1')
得到 ('a1','b1','c1')
和 ('a1','b1')
。那很容易。
你可以填补空白。
构建所有并过滤掉
...可能只有在您需要与我理解的(略有)不同的东西时才有用。
我的列表很少:
a = [1,2,3]
b = [4,5,6]
c = [7,8,9,10]
如何生成所有组合,例如:
a[0], b[0]
a[1], b[1]
a[2], b[2]
a[0], b[0], c[0]
a[1], b[1], c[0]
a[2], b[2], c[0]
a[1], b[1], c[1]
a[2], b[2], c[2]
a[0], b[0], c[3]
a[1], b[1], c[3]
a[2], b[2], c[3]
.....
每个列表中一次只能有一个值。
假设有两个或更多列表,比如 a=[1,2,3] 和 b=[4,5,6] 和 c=[7,8,9] 我想要所有可能的对,例如 (a [0], b[0]),(a[1], b[1]), (a[0], b[0], c[0])...
不确定我是否理解正确你的问题,但你是这个意思吗?
from itertools import permutations
my_list = ['a1', 'a2', 'a3', 'b1', 'b2', 'c1']
for i in range(len(my_list)):
print(list(permutations(my_list, i)))
根据您的示例,您似乎只需要 abc
类型的排列。因此,您可以:1) 显式构建 "permutations",或者 2) 构建所有排列并过滤掉不需要的排列。
显式构造
- 构建您的
list_of_lists
,即[['a1', 'a2', 'a3'], ['b1', 'b2'], ['c1']]
- 建立你的排列。使用
itertools.product
,参见 All combinations of a list of lists - 在每个排列中,您可能希望在一个循环中创建多个排列。例如,从
('a1','b1','c1')
得到('a1','b1','c1')
和('a1','b1')
。那很容易。
你可以填补空白。
构建所有并过滤掉
...可能只有在您需要与我理解的(略有)不同的东西时才有用。