gpt4 book ai didi

python - 基于python中的两个变量排序

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:18:10 24 4
gpt4 key购买 nike

我正在用 Python 编写排序算法。

例如,

假设我有 10 个 child 是从 1 个 parent 那里生成的。每个 child 都有两个属性“适应度”和“噪声”。

比方说,我先计算 10 个 child 的“适应度”,然后只选择 3 个最好的 child (“适应度”高的 child 被选为最佳)。例如,我们将 60、50、40 作为 3 个最好的 child 的适应度值。

现在我开始计算 3 个 child 的“噪音”。再举个例子,假设我得到 3 个 child 的“噪音”为 5、8、6。 (较少的“噪音”被认为更好)。

如何根据最佳“适应度”和“噪声”找到可供选择的排序算法。理想情况下,我需要一个“适应度”高、“噪音”低的 child 。我需要按照从 3 个 child 中选出最好的 child 的方式对它们进行排序。

Initial 3 children:

Fitness {60,50,40} Noise {5,8,6}

排序后我理想的3个 child 应该是:

Fitness {60,40,50} Noise {5,6,8}

我也不确定如何赋予选择噪音作为次要变量的权重。

基本上我正在寻找一个好的 python 排序算法。

最佳答案

>>> from collections import namedtuple

>>> Child = namedtuple('Child', 'fitness noise')

>>> children = [Child(fitness=60, noise=5),
... Child(fitness=50, noise=8),
... Child(fitness=40, noise=6)]

您可以使用内置的 sorted函数,并传递一个 lambda 作为键。 lambda 返回用于比较的对象。如果我们返回一个元组,它将根据元组的第一个元素排序,然后是第二个元素,依此类推。

如果我们让元组首先是噪声,然后是适应度的负数,它会给出你想要的顺序:

>>> sorted(children, key=lambda child: (child.noise, -child.fitness))
[Child(fitness=60, noise=5),
Child(fitness=40, noise=6),
Child(fitness=50, noise=8)]

关于python - 基于python中的两个变量排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30916782/

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