如何将文本文件中的数据存储为Python整数列表
解决方案
你可以按行读取文件内容,拆分每行的标识与数字部分,将字符串数字转为整数列表后,赋值给对应变量。这里提供两种实用方法:
方法一:直接赋值对应变量
with open('input.txt', 'r') as f: for line in f: line = line.strip() # 移除换行符与首尾空格 if not line: continue # 跳过空行 # 按冒号拆分,只拆分一次,避免数字中出现冒号的极端情况 key, nums_str = line.split(':', 1) # 将逗号分隔的字符串数字转为整数列表 nums = list(map(int, nums_str.split(','))) # 根据标识赋值到对应变量 if key == 'min': min_list = nums elif key == 'avg': avg_list = nums elif key == 'max': max_list = nums # 验证结果 print(min_list) # 输出: [1, 2, 3, 4, 5, 7, 8, 9] print(avg_list) # 输出: [1, 2, 3, 4] print(max_list) # 输出: [1, 2, 3, 4, 5, 1, 2, 3, 44, 55, 32, 12]
注意:这里用
min_list而非min作为变量名,因为min是Python内置函数,直接覆盖可能导致后续代码出错。
方法二:用字典存储(更适合扩展)
如果后续可能新增更多标识(如sum、median等),用字典存储会更灵活,无需编写大量条件判断:
data = {} with open('input.txt', 'r') as f: for line in f: line = line.strip() if not line: continue key, nums_str = line.split(':', 1) data[key] = list(map(int, nums_str.split(','))) # 按需提取变量 min_list = data['min'] avg_list = data['avg'] max_list = data['max']
你的原代码问题分析
你之前的代码input.strip().split(',')会将整个文件内容按逗号拆分,得到类似['min:1', '2', '3', ..., 'max:1', '2', ...]的大列表,无法区分数字所属的标识。正确逻辑是先按行拆分文件内容,再单独处理每行的标识与数字部分。
内容的提问来源于stack exchange,提问作者Slayer21
相关产品推荐
相关产品推荐

