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

>>>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表示二维,但是找不到一种使方法与维数无关的方法:

>>> 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]))

关于python - python坐标生成器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15325745/

10-10 14:06