好的。我正在寻找最聪明、最紧凑的方法来实现这个功能。
def f():
[[a,b,c] for a in range(6) for b in range(6) for c in range(6)]
这个应该生成所有a、b、c的组合,如下:
[0,0,0]
[0,0,1]
[0,0,2]
...
[1,0,0]
[1,0,1]
...
等等看吧...
但我希望这个程序具有灵活性,这样我就可以更改范围或可迭代对象,也可以更改生成数组的长度。范围很容易实现:
def f(min, max):
[[a,b,c] for a in range(min,max) for b in range(min,max) for c in range(min,max)]
这对于长度为3的数组来说还好,但现在我正在考虑制作长度为4或7的数组,并在同一范围内生成所有组合。
可能存在一种简单的方法,也许是通过连接数组或以某种方式嵌套理解列表,但我的解决方案似乎过于复杂了。
很抱歉发了这么长的帖子。
itertools
模块有一个product
函数,正好可以实现你要的功能。使用from itertools import product; product(range(6), range(6), range(6))
。无论哪个迭代器放在最后,它都是循环速度最快的。 - Elliot