首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python根据元组值删除元组

Python根据元组值删除元组
EN

Stack Overflow用户
提问于 2013-10-22 06:45:36
回答 2查看 114关注 0票数 0

我希望返回元组,这样它们的权重加起来就可以达到400,但也不应该有重复的类。

因此,下面的最佳解决方案是(项目,weight<400,最大值,没有重复的类别,所以1a,1e,1g,1b)

代码语言:javascript
复制
#mytuple = (item, weight, value, class)
mytuple= (('map', 9, 150, 'a'), ('compass', 13, 35, 'a'), ('water', 153, 200, 'a'), ('sandwich', 50, 160, 'a'), ('glucose', 15, 60, 'e'), ('banana', 27, 60, 'g'), ('suntan cream', 11, 70, 'a'), ('waterproof trousers', 42, 70, 'e'), ('waterproof overclothes', 43, 75, 'a'), ('note-case', 22, 80, 'a'), ('sunglasses', 7, 20, 'b'), ('socks', 4, 50, 'a'))
EN

回答 2

Stack Overflow用户

发布于 2013-10-22 07:09:12

您可能希望考虑使用setdictionary (以类为键),而不是元组的元组。它们更容易操作。

问题本身就是背包问题,这是一个经典的计算机科学,并且在互联网上有详尽的记录。

最简单(但通常不准确)的解决方案是贪婪算法,但由于这几乎肯定是一个家庭作业问题,因此您需要动态编程解决方案-因为这是对动态编程的规范介绍。This is a pretty good overview,带有可读的伪代码和漂亮的表格。

票数 1
EN

Stack Overflow用户

发布于 2013-10-22 07:07:16

下面是如何从列表中删除元素的方法:

代码语言:javascript
复制
>>> a = [1, 2, 3]
>>> a
[1, 2, 3]
>>> a.pop()  #remove & return the right-most element
3
>>> a
[1, 2]
>>> a.pop(0) #remove & return element at given index
1
>>> a
[2]

至于你的问题,它是bin packing problem的一种变体,而且是NP难的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19506168

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档