蛮力算法

时间:2020-09-21 13:50:03

标签: python

我正在尝试从满足数量不超过max_quantity的元组列表中找到最佳值。 输入:

list = [('a', 1, 19), ('b', 2, 19), ('c', 1, 49), ('d', 5, 79)]

代码:

for item in list:
  best_value = 0
  best_quant = 0
  set_value = sum(b[2] for b in item])
  set_quant = sum([b[1] for b in item])
  if set_value > best_value and set_quant <= max_quant:
     best_value = set_value 
     best_quant = set_quant
  print(best_value)

但是,我不断遇到类型错误,该错误发生在set_value的行中,提示“ int”对象不可订阅。我不明白,因为当我遍历列表时,它将是元组,并且我尝试为该元组建立索引。

1 个答案:

答案 0 :(得分:2)

在修正了注释中提到的括号问题并更改了list => _list(不要将内置变量/类型用作变量名)之后,只需去除{{1 }}循环并使用列表组合。在外部for上:

_list

您已经在列表comp _list = [('a', 1, 19), ('b', 2, 19), ('c', 1, 49), ('d', 5, 79)] best_value = 0 best_quant = 0 set_value = sum([b[2] for b in _list]) set_quant = sum([b[1] for b in _list]) if set_value > best_value and set_quant <= max_quant: best_value = set_value best_quant = set_quant print(best_value) 中进行了迭代,但是无法从已从元组解包的int中获取元素。

相关问题