gpt4 book ai didi

python - 如何分配数组元素

转载 作者:行者123 更新时间:2023-12-03 23:44:17 27 4
gpt4 key购买 nike

我有一个数组:

A=[1,2,3]
我想将这些元素分配给两个人,并希望使用 python** 打印所有可能的组合。
例如:
[(1,2)(3)] ,[(1)(2,3)]....
这里第一个得到 1,2,第二个得到 3。
在第二个组合中,第一个得到 1,第二个得到 2,3
更重要的一件事是:
如果 [2, 3] [1]是一种组合然后 [1] [2,3]也是一个不同的组合,我们也要打印那个
我想得到所有这些组合。
EDIT 1-  For better understanding i am adding one more example.

A=[ 1,2,3]

Here is the all desired combination.
[
[] , [1,2,3]
[1,2,3] ,[]
[1], [2, 3]
[2, 3], [1]
[1, 2], [3]
[3], [1, 2]
[2], [1, 3]
[1, 3], [2] ]

最佳答案

我必须在前面加上它并说它不是很优化,但是它非常稳定,并且应该适用于 a 的任何长度.

from itertools import chain, permutations
from pprint import pprint

def devider(x):
dev = round(len(x)/2)
return x[:dev], x[dev:]

def sorter(x):
r = []
for i in x:
if isinstance(i, tuple):
r.extend(list(i))
else:
r.append(i)
return r

a = [1, 2, 3]
x = list(set(chain(*[[i, i[::-1]] for i in map(devider, permutations(a))])))
pprint(sorted(x, key=sorter))
输出:
[((1, 2), (3,)),
((1,), (2, 3)),
((1, 3), (2,)),
((1,), (3, 2)),
((2,), (1, 3)),
((2, 1), (3,)),
((2,), (3, 1)),
((2, 3), (1,)),
((3,), (1, 2)),
((3, 1), (2,)),
((3, 2), (1,)),
((3,), (2, 1))]
pprint模块和 sorter函数仅用于表示目的,因此更容易看到每个想要的排列都被表示了。

如果要包含 ((1, 2, 3), ())((), (1, 2, 3))您可以简单地手动完成并使用 list.extend将它们添加到列表中的方法:
z = [(tuple(a), ()), ((), tuple(a))]
x.extend(z)

关于python - 如何分配数组元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63836074/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com