请求实现:筛选c1列值之和≤10的索引集合并保存为列表
问题描述
现有如下数据:
Index c1 sls1 6 sls2 4 sls3 7 sls4 5 sls5 5
需求:通过循环筛选出满足对应c1列值之和≤10的索引集合,将这些索引集合保存为列表形式输出。示例输出如下:
output [sls1, sls2] [sls3] [sls4, sls5]
示例说明:第一组[sls1,sls2]是因为二者c1值之和为10;第二组仅sls3是因为其c1值为7,若与下一个索引值相加会超过10,以此类推。
解决方案
可以通过Python循环遍历数据,维护当前组的索引列表和累加和,当加入下一个元素会超出阈值时,就将当前组存入结果并开启新组。代码实现如下:
# 原始数据,以(索引, c1值)元组的形式存储 data = [("sls1", 6), ("sls2", 4), ("sls3", 7), ("sls4", 5), ("sls5", 5)] result = [] current_group = [] current_sum = 0 for idx, val in data: # 判断当前值加入后是否仍满足和≤10 if current_sum + val <= 10: current_group.append(idx) current_sum += val else: # 保存当前组,开启新组 result.append(current_group) current_group = [idx] current_sum = val # 处理最后一组未存入的数据 result.append(current_group) # 输出结果 print("output") for group in result: print(group)
运行代码后输出与示例一致:
output ['sls1', 'sls2'] ['sls3'] ['sls4', 'sls5']
内容的提问来源于stack exchange,提问作者Sari Devi
相关产品推荐
相关产品推荐

