1

我需要按给定尺寸生成所有点坐标,例如:

>>>points(2,2)
>>>[(0,0),(0,1),(1,0),(1,1)]
>>>points(1,1,1)
>>>[(0,0,0),(0,0,1),(0,1,0),(0,1,1),(1,1,0),(1,1,1)]

我已经看到了二维的解决方案,但无法找到一种方法使方法独立于维数:

>>> from itertools import product
>>> list(product(xrange(d) for d in (1,2,3)))
[(xrange(1),), (xrange(2),), (xrange(3),)] #where is my tuples?

其中 (1,2,3) 是 *args 元组,可以是任何东西。

4

1 回答 1

2

调用函数时需要使用 *以使用可迭代对象作为参数列表。f(*[1,2,3]) 像 f(1,2,3) 一样工作。

知道这一点,并使用 itertools:

def points(*args):
  return list(product(*[range(n) for n in args]))
于 2013-03-10T18:23:21.233 回答