2024-05-16 19:09:15 发布
网友
是否可以使用列表理解或数组理解来生成数组数组?在
例如,我有一个从0到9的列表:
rng = range(0,10)
然后我想从上面的rng创建一个5对cartesion产品对。我试过下面的方法,但没用。在
它不能编译。有人能告诉我正确的编码方法吗?在
要使用列表理解:
[ (x, y) for x in rangeA for y in rangeB ]
不过,我会使用itertools.product,因为它更具有自记录性。在
itertools.product
在重读你的问题之后,你似乎还想计算一个任意维的叉积,在列表理解中不能参数化。在
用列表理解法来做并不是一个好方法,但是如果你想这样做,你可以做如下的事情:
[(i,j,k,l,m) for i in range(10) for j in range(10) for k in range(10) for l in range(10) for m in range(10)]
但我建议你按照@NPE的建议去做itertools.product():
itertools.product()
您可以使用^{}:
In [4]: list(itertools.product(range(10), repeat=2)) Out[4]: [(0, 0), (0, 1), (0, 2), ... (9, 6), (9, 7), (9, 8), (9, 9)]
根据需要调整repeat参数(听起来像是在寻找repeat=5)。在
repeat
repeat=5
如果只需要iterable而不是list,可以省略list()调用。在
list()
要使用列表理解:
不过,我会使用
itertools.product
,因为它更具有自记录性。在在重读你的问题之后,你似乎还想计算一个任意维的叉积,在列表理解中不能参数化。在
用列表理解法来做并不是一个好方法,但是如果你想这样做,你可以做如下的事情:
但我建议你按照@NPE的建议去做
^{pr2}$itertools.product()
:您可以使用^{} :
根据需要调整
repeat
参数(听起来像是在寻找repeat=5
)。在如果只需要iterable而不是list,可以省略
list()
调用。在相关问题 更多 >
编程相关推荐