如何在python中使用列表/数组理解来生成叉积对

2024-05-16 19:09:15 发布

您现在位置:Python中文网/ 问答频道 /正文

是否可以使用列表理解或数组理解来生成数组数组?在

例如,我有一个从0到9的列表:

rng = range(0,10)

然后我想从上面的rng创建一个5对cartesion产品对。我试过下面的方法,但没用。在

^{pr2}$

它不能编译。有人能告诉我正确的编码方法吗?在


Tags: 方法列表产品range数组rng编码方法pr2
3条回答

要使用列表理解:

[ (x, y) for x in rangeA for y in rangeB ]

不过,我会使用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()

^{pr2}$

您可以使用^{}

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)。在

如果只需要iterable而不是list,可以省略list()调用。在

相关问题 更多 >