如何在循环中汇总每次输出值到公共列表并统一展示?
统一展示逐日数据处理结果的解决方案
嘿,这个需求很常见,只要把每天的处理结果先存储起来,等所有循环跑完再统一输出就可以啦!下面给你两种实用的实现方式:
方法一:用列表分别存储各指标结果
这种方式直观,适合需要单独查看某一指标所有结果的场景:
import datetime # 初始化空列表,用于存储每日结果和对应日期 all_dates = [] all_D1 = [] all_D2 = [] all_D3 = [] start_evt_list= ['2016_01_03_15_0_0','2016_01_07_08_00_00','2016_01_10_12_0_0'] N_evt = [256, 256, 256] n = len(start_evt_list) for i in range(n): start_evt = datetime.strptime(start_evt_list[i], '%Y_%m_%d_%H_%M_%S') # --- 这里放你原来的一系列数据处理操作,最终得到D1、D2、D3 --- # 示例模拟结果(你替换成自己的实际计算结果即可) D1 = N_evt[i] * 0.5 D2 = N_evt[i] * 1.2 D3 = N_evt[i] + 10 # 将当日结果存入列表,而非立即打印 all_dates.append(start_evt.strftime('%Y-%m-%d %H:%M:%S')) all_D1.append(D1) all_D2.append(D2) all_D3.append(D3) # 循环结束后统一输出所有结果 print("=== 所有日期处理结果汇总 ===") for date, d1, d2, d3 in zip(all_dates, all_D1, all_D2, all_D3): print(f"日期:{date}") print(f"D1 = {d1}") print(f"D2 = {d2}") print(f"D3 = {d3}") print("-" * 30) # 分隔线,让结果更清晰易读
方法二:用字典+列表存储完整单日结果
这种方式把单日的所有信息打包成字典,结构更清晰,方便后续对单条结果进行操作:
import datetime # 初始化空列表,每个元素是包含单日所有信息的字典 results = [] start_evt_list= ['2016_01_03_15_0_0','2016_01_07_08_00_00','2016_01_10_12_0_0'] N_evt = [256, 256, 256] n = len(start_evt_list) for i in range(n): start_evt = datetime.strptime(start_evt_list[i], '%Y_%m_%d_%H_%M_%S') # --- 这里放你原来的一系列数据处理操作 --- # 示例模拟结果 D1 = N_evt[i] * 0.5 D2 = N_evt[i] * 1.2 D3 = N_evt[i] + 10 # 将当日日期和结果打包成字典,加入结果列表 day_result = { "日期": start_evt.strftime('%Y-%m-%d %H:%M:%S'), "D1": D1, "D2": D2, "D3": D3 } results.append(day_result) # 统一输出汇总结果 print("=== 所有日期处理结果汇总 ===") for res in results: print(f"日期:{res['日期']}") print(f"D1 = {res['D1']}") print(f"D2 = {res['D2']}") print(f"D3 = {res['D3']}") print("=" * 30)
核心思路
两种方法的本质都是延迟输出:把循环中每一步的结果临时存储在容器(列表/字典)里,等所有数据处理完成后,再遍历容器统一打印。这样既保留了所有结果,又能让最终输出更整洁有序。
内容的提问来源于stack exchange,提问作者Kilgore Trout
相关产品推荐
相关产品推荐

