gpt4 book ai didi

python - 如何对python中的所有组合进行排序?

转载 作者:行者123 更新时间:2023-11-28 21:07:58 25 4
gpt4 key购买 nike

我有 K=2N=3 并且我生成所有组合如下:

list(itertools.product(range(1, N+1), repeat=K))

我明白了

[(1, 1), 
(1, 2),
(1, 3),
(2, 1),
(2, 2),
(2, 3),
(3, 1),
(3, 2),
(3, 3)]

我需要对这些组合进行排序才能得到

[(1, 1), 
(2, 2),
(3, 3),
(1, 2),
(1, 3),
(2, 1),
(2, 3),
(3, 1),
(3, 2)]

如何为一般的 KN 执行此操作?

这就像有 N 个垃圾箱和 K 个项目,我想生成所有可能的项目到垃圾箱的分配,但从

开始
  • 分配给 bin 1 的所有项目,然后是 bin 2,等等。
  • K-1 件元素分配给 bin 1,一件元素分配给 bin 2,依此类推。
  • ...

因此在示例中,(1, 1) 表示所有项目都在 bin 1 中,(2, 2) 表示所有项目都在 bin 2 中,依此类推. (1, 2) 表示项目 1 在 bin 1 中,项目 2 在 bin 2 中,依此类推。

最佳答案

它已经几乎按照你想要的方式生成了,所以你可以利用 python 的稳定排序:

>>> L = list(itertools.product(range(1, N+1), repeat=K))
>>> L.sort(key=lambda t: len(set(t)))
>>> L
[(1, 1), (2, 2), (3, 3), (1, 2), (1, 3), (2, 1), (2, 3), (3, 1), (3, 2)]

这只是将具有最相等值的元组推到前面。它应该推广到与您描述的方式一致的更高维度。

关于python - 如何对python中的所有组合进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40813173/

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