我的名单很少:
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])......
答案 0 :(得分:1)
根据您的示例,您似乎只想要Bitmap
- 类型排列。所以你要么:1)明确地构建你的“排列”,或2)构建所有排列并过滤掉你不想要的那些。
明确构建
abc
,即list_of_lists
[['a1', 'a2', 'a3'], ['b1', 'b2'], ['c1']]
,请参阅All combinations of a list of lists itertools.product
获取('a1','b1','c1')
和('a1','b1','c1')
。这很容易。你可以填补空白。
构建所有内容并过滤掉
...如果你需要的东西(稍微)与我理解的东西不同,可能只是有用。
答案 1 :(得分: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)))