gvr*_*cha 39 python cartesian-product python-itertools
我有一个数组列表,我想获得数组中元素的笛卡尔积.
我将用一个例子来说明这个更具体......
itertools.product似乎可以做到这一点,但我陷入了一些细节.
arrays = [(-1,+1), (-2,+2), (-3,+3)];
Run Code Online (Sandbox Code Playgroud)
如果我做
cp = list(itertools.product(arrays));
Run Code Online (Sandbox Code Playgroud)
我明白了
cp = cp0 = [((-1, 1),), ((-2, 2),), ((-3, 3),)]
Run Code Online (Sandbox Code Playgroud)
但我想得到的是
cp1 = [(-1,-2,-3), (-1,-2,+3), (-1,+2,-3), (-1,+2,+3), ..., (+1,+2,-3), (+1,+2,+3)].
Run Code Online (Sandbox Code Playgroud)
我尝试了一些不同的东西:
cp = list(itertools.product(itertools.islice(arrays, len(arrays))));
cp = list(itertools.product(iter(arrays, len(arrays))));
Run Code Online (Sandbox Code Playgroud)
他们都让我CP0代替CP1.
有任何想法吗?
提前致谢.
int*_*jay 46
>>> list(itertools.product(*arrays))
[(-1, -2, -3), (-1, -2, 3), (-1, 2, -3), (-1, 2, 3), (1, -2, -3), (1, -2, 3), (1, 2, -3), (1, 2, 3)]
Run Code Online (Sandbox Code Playgroud)
这会将所有对作为单独的参数提供给product
,这将为您提供它们的笛卡尔积.
你的版本不起作用的原因是你只提供product
一个参数.要求一个列表的笛卡尔积是一个微不足道的情况,并返回一个只包含一个元素的列表(作为参数给出的列表).
rkh*_*rov 37
>>> arrays = [(-1,+1), (-2,+2), (-3,+3)]
>>> list(itertools.product(*arrays))
[(-1, -2, -3), (-1, -2, 3), (-1, 2, -3), (-1, 2, 3), (1, -2, -3), (1, -2, 3), (1, 2, -3), (1, 2, 3)]
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
46110 次 |
最近记录: |