我是python新手,我有以下问题。当我运行此代码时:
import numpy as np
my_file1 = open("ex2-dnalist1.txt")
my_file2 = open("ex2-dnalist2.txt")
lines1 = my_file1.readlines()
lines2 = my_file2.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 n in lines1[n]:
for m in lines2[m]:
EditDistanceM(lines1[n],lines2[m])
list_10 += EditDistanceM(lines1[n],lines2[m])
我得到一个错误:
TypeError Traceback (most recent call last)
<ipython-input-89-957aaf99b22e> in <module>
34
35 list_10 = []
---> 36 for n in lines1[n]:
37 for m in lines2[m]:
38 EditDistanceM(lines1[n],lines2[m])
TypeError: list indices must be integers or slices, not str
即使在for循环外写入n=0和m=0,我也会得到相同的错误,但这次是在两个for循环内写入EditDistancM函数。你能帮帮我吗
你的错误在这里:
当您想要在
list
上循环时,不需要使用likelines1[n]
。 当您使用lines1[n]
时,意味着您希望访问list/array
元素。 当您想要在list/array
上循环时,只需要使用list/array
变量。 另外,当您想要将element/item
添加到list/array
时,您需要使用.append
方法,而不是+=
试试这个:
相关问题 更多 >
编程相关推荐