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