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

私は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タプルであり、何でもかまいません。

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 に答える