当前位置: 首页 > 知识库问答 >
问题:

如何在小数背包的python实现中保留数组索引?

相德宇
2023-03-14

在这里,我的直觉是将所有列表排序在一起,或者更确切地说,使用unit_prices的排序顺序来确定其他列表的顺序,但我不确定如何实现它。

共有1个答案

姬衡
2023-03-14

不要有两个单独的列表,而是将每个项表示为单个对象。例如:

from typing import NamedTuple


class Item(NamedTuple):
    name: str
    price: float
    weight: float


items = [
    Item("cheese", 1.0, 1.0), 
    Item("bread", 0.25, 0.5), 
    Item("milk", 2.0, 1.5)
]

现在您有了一个项目列表,每个项目都有名称价格重量,因此您可以非常容易地执行以下操作:

items.sort(key=lambda item: item.price/item.weight, reverse=True)

由于每个项目都是一个单一的(且不可变的)单元,对项目列表进行排序不会导致您忘记哪个价格与哪个重量或哪个名称相匹配。

 类似资料:
  • 本文向大家介绍在Python中实现分数背包问题的程序,包括了在Python中实现分数背包问题的程序的使用技巧和注意事项,需要的朋友参考一下 假设我们有两个列表,权重和相同长度的值,以及另一个值容量。权重[i]和值[i]表示第i个元素的权重和值。因此,如果我们最多可以采用容量权重,并且可以按比例取值,则占项目权重的一小部分,则必须找到可以得到的最大值(四舍五入为最接近的整数) 因此,如果输入像权重=

  • 我想四舍五入任何双到一个字符串2小数位在Java。我尝试过使用十进制格式,但它没有给出预期的结果。任何帮助将不胜感激。 Ex: I/P:3402100.5323 我想将其转换为: O/P: 34.02 我尝试过使用DecimalFormat(“###,##,##,###0.00”,新的DecimalFormatSymbols(Locale.US))但结果是340210.53,而我希望它输出34.0

  • 本文向大家介绍实现js保留小数点后N位的代码,包括了实现js保留小数点后N位的代码的使用技巧和注意事项,需要的朋友参考一下 在JS中,一般实现保留小数点后N位的话,都是利用toFixed函数 四舍五入的转换函数,如下: 参数里的: v表示要转换的值 e表示要保留的位数 函数里的两个for,这个是重点了, 第一个for针对小数点右边的情况,也就是保留小数点右边多少位; 第二个for针对小数点左边的情

  • 问题内容: 数组在Java中被实现为对象,对吗?如果是这样,我可以在哪里查看数组类的源代码。我想知道数组中的length变量是否定义为常量,如果是这样,为什么不是全部使用大写字母LENGTH来使代码更易于理解。 问题答案: 尽管从它们继承java.lang.Object的角度来看,数组是Object,但是这些类是作为语言的特殊功能动态创建的。它们未在源代码中定义。 考虑以下数组: 没有这样的源代码

  • 问题内容: 我来自C ++背景,并且习惯于使用此类的东西。假设我想要这些的动态数组: 这样做的标准方法是什么? 摘要非常有用 问题答案: 使用内置 例: 有关附加的更多信息,请参考规范。

  • 问题内容: 我需要弄清楚如何在二维numpy数组中找到值的所有索引。 例如,我有以下2d数组: 我需要找到所有1和0的索引。 我试过了,但是并没有给我所有的索引: 基本上,它只给我每一行中的一个索引。 问题答案: 您可以用来返回x和y索引数组的元组,其中给定条件保存在数组中。 如果是阵列名称: 如果要列出(x,y)对,则可以使用两个数组: 或者,甚至更好的是,@ jme指出这可能是生成配对的一种更