【发布时间】:2021-09-18 14:22:21
【问题描述】:
我有一个项目,我需要找到可以解决以下问题的算法:
拥有三个项目列表:
A = [1,2,3,4,5]
B = [1,2,3,4,5]
C = [1,2,3,4,5]
使用python,我可以通过这行代码找到所有独特的组合:
allCombinations = list(set(product(A,B,C)))
但现在我需要从所有这些组合中获取,这些组合遵循相当线性的重新分区。
例如,有 125 个独特的组合,现在我想要 50 个组合,其中 A1 B1 C1 出现小于 A2 B2 C2 ...(如果它可以几乎是线性的,那就完美了)
我不知道如何解决这类问题,我该如何选择与我的想法相对应的最佳组合。
我可以用 125 种组合轻松搞定,但想要更多就太难了。
谢谢
#编辑
我将在这里重新制作示例。
A=[1,2]
B=[1,2]
C=[1,2]
此列表中的组合是
(1,1,1) (1,2,1) (1,2,2) (1,1,2) (2,1,1) (2,1,2) (2,2,1) (2,2,2)
如果我需要选择 3 个组合,我会选择 (2,2,2) (1,2,2) (2,2,1) 因为我想让 A,B,C 列表中的 1 少于2 来自 A、B、C。
目标是产生稀有度,A,B,C 代表三个项目列表。使三个列表中的第一项比第二项更稀有。
我想为很多项目这样做。
【问题讨论】:
-
product()做什么?需要import吗? -
“其中 A1 B1 C1 出现小于 A2 B2 C2”:您希望输出中有字母吗?如果你能给出更具体的例子来说明 "pretty linear repartition" 的含义会很好。
-
@p._phidot_ 是的,这是一个导入
from itertools import product -
@trincot 对不起我的英语不好,在输出中我只想要数字的组合,例如 (1,2,3) , (1,3,4) ...知道这个例子将有 125 个独特的组合,我想选择 A,B,C 列表中的 1 较少的组合,以及 A,B,C 中包含 2 的较少组合。 ..我将重新制作一个更明确的示例
-
@trincot 我无法编辑我的帖子,因为我是 Stackoverflow 的新手。我将在这里重新制作示例。
A = [1,2] B=[1,2] C=[1,2]组合是 ` (1,1,1) (1,2,1) (1,2,2) (1,1,2) (2,1,1) (2,1,2) ( 2,2,1) (2,2,2) ` 如果我需要选择 3 个组合,我会选择(2,2,2) (1,2,2) (2,2,1)因为我想让 A、B、C 列表中的 1 少于 A、B、C 中的 2 .目标是产生稀有度,A,B,C 代表三个项目列表。
标签: python algorithm generator combinations dynamically-generated