Python如何将for循环打印的输出结果赋值保存到变量
解决方法
print()的默认行为是把内容写入绑定到控制台的系统标准输出流,不会自动留存输出内容到变量,要保存循环生成的输出有两种常用方案:
方案一:初始化容器收集结果(推荐)
这是可读性、可维护性最好的实现,不需要引入额外模块,只需要把每次判断生成的结果存入预先定义的列表即可,需要和原控制台打印格式一致的字符串时再做拼接:
a = [0.5, 0.0, 1.2, 2.4, 0.1, 3.5] output_items = [] for obs in a: if obs > 0: current_val = '2' elif obs < 0.1: current_val = '1' output_items.append(current_val) # 拼接为和逐行打印效果完全一致的字符串 saved_output = '\n'.join(output_items)
运行后saved_output存储的内容和原代码直接打印到控制台的内容完全一致,单个结果也全部保存在output_items列表中,方便后续做逐值计算、格式转换等操作。
方案二:重定向标准输出捕获print内容
如果不想改动原有循环内的print逻辑,可以临时把标准输出重定向到内存缓存,循环执行完成后从缓存中读取所有打印内容:
import sys from io import StringIO a = [0.5, 0.0, 1.2, 2.4, 0.1, 3.5] print_buffer = StringIO() # 备份原有标准输出配置 original_stdout = sys.stdout # 将标准输出指向内存缓存 sys.stdout = print_buffer # 原有代码无需修改,直接执行 for obs in a: if obs > 0: print('2') elif obs < 0.1: print('1') # 恢复控制台输出 sys.stdout = original_stdout # 读取缓存中所有打印内容 saved_output = print_buffer.getvalue().strip()
注意:使用该方案必须在循环结束后恢复标准输出配置,否则后续所有print的内容都不会显示在控制台上。
内容的提问来源于stack exchange,提问作者Strato Maniac
相关产品推荐
相关产品推荐

