You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何对嵌套列表元素求和并生成总权重不超过23的子列表?

问题原因

你现有代码的逻辑是筛选单个子列表下标1的元素≤23的条目,而给出的测试数据中所有子列表的第二个元素最大仅为5,远小于23,所以输出和原列表完全一致,没有实现累加总和的判断逻辑。

实现方案

根据不同的选取规则,提供三种常见实现:

1. 按原列表顺序依次选取,加总不超过23即保留

this = [['A', 5, 310],['B', 3, 270], ['C', 4.5, 220], ['D', 1, 150], ['E', 3.5, 140], ['F', 2.5, 90], ['G', 4, 70], ['H', 3, 60], ['I', 2, 50], ['J', 1, 30]]

max_total = 23
current_sum = 0
result = []

for item in this:
    weight = item[1]
    if current_sum + weight <= max_total:
        result.append(item)
        current_sum += weight

print(result)
print("累加总权重:", current_sum)

运行输出总权重为22.5,符合≤23的要求。

2. 优先选权重最小的条目,选中条目数量最多

this = [['A', 5, 310],['B', 3, 270], ['C', 4.5, 220], ['D', 1, 150], ['E', 3.5, 140], ['F', 2.5, 90], ['G', 4, 70], ['H', 3, 60], ['I', 2, 50], ['J', 1, 30]]

max_total = 23
current_sum = 0
result = []
# 按下标1的权重升序排序
sorted_list = sorted(this, key=lambda x: x[1])
for item in sorted_list:
    weight = item[1]
    if current_sum + weight <= max_total:
        result.append(item)
        current_sum += weight

print(result)
print("累加总权重:", current_sum)
print("选中条目数量:", len(result))

3. 优先选总价值(下标2元素)最高的条目(01背包实现)

如果需要第三个元素的总价值最高,使用01背包算法实现:

this = [['A', 5, 310],['B', 3, 270], ['C', 4.5, 220], ['D', 1, 150], ['E', 3.5, 140], ['F', 2.5, 90], ['G', 4, 70], ['H', 3, 60], ['I', 2, 50], ['J', 1, 30]]
max_total = 23
# 权重存在小数,乘以2转整数处理避免精度问题
scale = 2
scaled_max = int(max_total * scale)
dp = [0] * (scaled_max + 1)
selected = [[] for _ in range(scaled_max + 1)]

for item in this:
    weight = item[1]
    value = item[2]
    scaled_w = int(weight * scale)
    for j in range(scaled_max, scaled_w - 1, -1):
        if dp[j - scaled_w] + value > dp[j]:
            dp[j] = dp[j - scaled_w] + value
            selected[j] = selected[j - scaled_w] + [item]

# 取总价值最高的结果
max_value = max(dp)
best_idx = dp.index(max_value)
result = selected[best_idx]
print("最优结果:", result)
print("总权重:", sum(i[1] for i in result))
print("总价值:", max_value)

内容的提问来源于stack exchange,提问作者Financestudent

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 19:06:04