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

运行Python编辑距离代码报TypeError列表索引类型错误求助

问题排查与修复方案

核心错误原因

  • 循环写法逻辑错误:for n in lines1[n]属于语法逻辑混淆,lines1是readlines()返回的字符串列表,直接遍历该列表得到的迭代变量是字符串类型的行内容,无法作为列表的索引参数,因此触发TypeError。即使提前给n赋初始整数值,进入循环后n会被重新赋值为字符串类型的行内容/字符,后续索引操作依然报错。
  • 列表追加方法错误:list_10 += EditDistanceM(...)会触发新报错,+=操作要求右侧为可迭代对象,编辑距离返回的是单个数值,需要用append()方法追加。
  • 冗余调用问题:同一次循环内调用两次EditDistanceM,会重复计算、重复打印矩阵,属于不必要的性能浪费。
  • 资源泄漏风险:打开文件后未执行关闭操作,长期运行可能导致文件句柄占用。
  • 计算结果偏差问题:readlines()返回的每行内容默认携带末尾的换行符,直接传入编辑距离函数会把换行符计入长度,导致计算结果不符合预期。

修复后可运行代码

import numpy as np

# 用with上下文管理器自动关闭文件,同时去掉每行的换行符和首尾空白
with open("ex2-dnalist1.txt", "r", encoding="utf-8") as f1:
    lines1 = [line.strip() for line in f1.readlines()]
with open("ex2-dnalist2.txt", "r", encoding="utf-8") as f2:
    lines2 = [line.strip() for line in f2.readlines()]

def EditDistanceM(s,t):
    size_x = len(s) + 1    
    size_y = len(t) + 1 
    matrix = np.zeros((size_x, size_y)) 
    for x in range(size_x):
        matrix[x,0] = x
    for y in range(size_y):
        matrix[0,y] = y
    for x in range(1, size_x):
        for y in range(1, size_y):
            if s[x-1] == t[y-1]:        
                matrix[x,y] = min(
                    matrix[x-1, y] + 1, 
                    matrix[x-1, y-1],   
                    matrix[x, y-1] + 1  
                    )
            else:                      
                matrix[x,y] = min(
                    matrix[x-1, y] + 1,
                    matrix[x-1, y-1] +1,
                    matrix[x, y-1] + 1
                    )
                
    print(matrix)
    return matrix[size_x - 1, size_y - 1]

list_10 = []
# 直接遍历两个列表的所有元素两两组合,无需额外索引操作
for s in lines1:
    for t in lines2:
        distance = EditDistanceM(s, t)
        list_10.append(distance)

如果你后续业务需要用到索引做其他操作,可以将循环部分替换为以下写法:

list_10 = []
for n in range(len(lines1)):
    s = lines1[n]
    for m in range(len(lines2)):
        t = lines2[m]
        distance = EditDistanceM(s, t)
        list_10.append(distance)

内容的提问来源于stack exchange,提问作者Maria Mamai

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 14:39:04