我需要根据给定的维度生成所有点的坐标,例如:
>>>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元组,可以是任何值
当调用函数使用可迭代对象作为参数列表时,需要使用*。f(*(1、2、3))就像f(1、2、3)
了解这一点,并使用itertools:
def points(*args):
return list(product(*[range(n) for n in args]))