You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 18:18:38