Python读取单行制表符分隔txt为int列表报类型错误如何解决
问题成因
代码运行报错、返回字符串列表的核心原因:遍历列表时的item是临时值拷贝,循环内执行item = int(item)仅修改了临时变量的指向,不会替换原列表memory中存储的字符串元素。memory始终为字符串列表,后续拿字符串类型的元素和整数做大小比较,自然会触发TypeError。
正确实现方案
split()方法不传参时,会自动按任意空白字符(制表符、多空格、换行符均可)分割内容,完全适配你当前制表符分隔数值的文件场景,以下是三种可直接运行的实现:
- 方案1:列表推导式写法(最推荐,可读性最高)
# 推荐用with上下文管理自动关闭文件,避免资源泄漏 with open('input.txt', 'r', encoding='utf-8') as f: # 读取第一行内容,分割后直接转int memory = [int(num) for num in f.readline().strip().split()] print(memory) # 输出 [4, 1, 15, 12] # 后续逻辑可正常执行 max_val = max(memory) while max_val > 0: # 填充你的业务逻辑即可 pass
- 方案2:修正你原有写法的逻辑
原写法的问题是没有修改原列表的元素,换成按下标遍历替换即可:
f = open('input.txt', 'r') for line in f: memory = line.split() # 遍历列表下标,直接替换原位置的元素为int类型 for idx in range(len(memory)): memory[idx] = int(memory[idx]) f.close() # 手动打开的文件记得手动关闭
- 方案3:map批量转换写法
with open('input.txt', 'r', encoding='utf-8') as f: memory = list(map(int, f.readline().split()))
内容的提问来源于stack exchange,提问作者Daria
相关产品推荐
相关产品推荐

