gpt4 book ai didi

python - 不同大小的笛卡尔积

转载 作者:行者123 更新时间:2023-11-28 21:20:50 26 4
gpt4 key购买 nike

感谢 itertools.product() 函数,我可以获得列表的笛卡尔积:

lists = [['A', 'B'], ['1', '2'], ['x', 'y']]
combinations = itertools.product(*lists)
# [('A', '1', 'x'), ('A', '2', 'y'), ..., ('B', '2', 'y')]

我想要的是同样的东西,但尺寸不同:

all_comb = magicfunction(lists)
# [('A', '1', 'x'), ..., ('B', '2', 'y'), ('A', '1'), ('A', '2'), ... ('2', 'y'), ... ('y')]

我看不到一种显而易见的方法。

我需要一种方法来设置元组的最小和最大大小(我处理长列表并且只需要 7 到 3 的大小组合,列表的数量及其大小各不相同)。

我的列表更像是:

lists = [['A', 'B', 'C'], ['1', '2'], ['x', 'y', 'z', 'u'], ...] # size may go to a few dozens

最佳答案

>>> from itertools import product, combinations
>>> lists = [['A', 'B'], ['1', '2'], ['x', 'y']]
>>> for i in xrange(2, len(lists)+1):
for c in combinations(lists, i):
print list(product(*c))
...
[('A', '1'), ('A', '2'), ('B', '1'), ('B', '2')]
[('A', 'x'), ('A', 'y'), ('B', 'x'), ('B', 'y')]
[('1', 'x'), ('1', 'y'), ('2', 'x'), ('2', 'y')]
[('A', '1', 'x'), ('A', '1', 'y'), ('A', '2', 'x'), ('A', '2', 'y'), ('B', '1', 'x'), ('B', '1', 'y'), ('B', '2', 'x'), ('B', '2', 'y')]

关于python - 不同大小的笛卡尔积,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22221721/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com