我正在尝试雕刻一些文件。为了做到这一点,我想对所有可能性进行排列。有3个可能的开始,40个可能的中间区块和3个可能的结束。
问题是我们不知道中间块有多长时间。它可以是1个块长,但也可以是40个块长。我们唯一可以确定的是,这些块是连续出现的,因为它是我要恢复的PNG。
我已经尝试过自己编写带有很多for循环的代码,到目前为止还没有成功。 我确实尝试了以下代码。
s= [[headersList],[idatList],[iendList]]
print(list(itertools.product(*s)))
我希望输出是类似的
[1, [1], 1]
[1, [1,2] , 1]
[1, [1,2,3], 1]
...
[2, [1] ,1]
[2, [1, 2], 1]
以此类推。 唯一的条件是开始和结束块必须位于数组的相应开始和结束位置。中间区块的大小必须为1到最大40(连续的顺序)。
答案 0 :(得分:1)
您应该在这里使用产品:
from itertools import product
head = range(1,4)
tail = range(1,4)
middle = range(1,41)
combos = [(h,list(range(1,m+1)),t) for t,h,m in product(tail,head,middle)]
print(combos)
# [(1, [1], 1), (1, [1, 2], 1), (1, [1, 2, 3], 1),
# (1, [1, 2, 3, 4], 1), (1, [1, 2, 3, 4, 5], 1), ...