我想写一个函数,它接受一个整数列表(例如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 for _ in range(n)]
创建一个L
重复n
次的列表。然后只需使用星形运算符将此列表取消引用到meshgrid
函数。在函数调用中,星形运算符是什么意思?
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]])