2013-03-10 93 views
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)] 

我,见过solution 2维,但不能找到一种方法,使独立的维数的方法:

>>> 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元组,它可以是任何东西。

回答

2

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

知道了这一点,并使用itertools:

def points(*args): 
    return list(product(*[range(n) for n in args]))