我想编写一个函数,该函数接受整数列表(例如L = [0,1,-1]
)和单个整数(例如n = 3
),并返回该列表的所有(例如三胞胎):[0,0,0],[0,0,1],...[-1,-1,-1]
其中有将为len(L)**n
。如果我致力于n=3
,我可以这样做:
np.array(np.meshgrid(L,L,L)).T.reshape(-1,3)
但是,如果要将3更改为其他数字,则需要将列表输入n次网格。有一种行之有效的方法可以适用于任意n
吗?我希望我想做的事情有意义。似乎函数已经存在,但我似乎找不到任何东西。
通过以下方法创建L
的列表,该列表重复n
次:[L for _ in range(n)]
。然后只需使用星号运算符将此列表取消引用到meshgrid
函数即可。 What does the star operator mean, in a function call?
n = 2
>>> np.array(np.meshgrid(*[L for _ in range(n)])).T.reshape(-1, n)
array([[ 0, 0],
[ 0, 1],
[ 0, -1],
[ 1, 0],
[ 1, 1],
[ 1, -1],
[-1, 0],
[-1, 1],
[-1, -1]])