有什么更好的方法来生成(x1,y1,x2,y2)形式的所有可能元组的元组?

zha*_*nwu 3 python

我想以((x1,y1,x2,y2),...(x1,y1,x2,y2))的形式生成一个元组元组,其中x1,y1,x2,y2都在(0)的范围内,8).

还有其他方式而不是以下方式吗?

S = list()
for x1 in range(0, 8):
    for y1 in range(0, 8):
        for x2 in range(0, 8):
            for y2 in range(0, 8):
                S.append([x1,y1,x2,y2])
S = tuple(S)       
Run Code Online (Sandbox Code Playgroud)

谢谢

ken*_*ytm 8

tuple([x1, y1, x2, y2] for x1 in range(0, 8) for x2 in range(0, 8) for y1 in range(0, 8) for y2 in range(0, 8))
Run Code Online (Sandbox Code Playgroud)

要么

import itertools
a = [range(0,8)]*4
print tuple(itertools.product(*a))
Run Code Online (Sandbox Code Playgroud)

请注意,这会返回一个元组元组.如果您需要列表元组,请使用tuple(itertools.imap(list, itertools.product(*a))).

  • itertools的下一个版本将包括`itertools.solve_traveling_salesman()`和`itertools.fermats_last_theorem()`. (4认同)
  • 您还可以使用`repeat`关键字参数来实现良好的效果:`tuple(itertools.product(range(8),repeat = 4))` (2认同)