【发布时间】:2021-11-28 05:38:07
【问题描述】:
我是 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 函数。你能帮帮我吗?
【问题讨论】:
-
for n in lines1[n]没有意义...看来您可能需要花更多时间阅读一些 Python 教程和初学者书籍,以了解for循环的真正工作原理。 -
循环
for n in ...将改变 n 的值。如果你的行中有字符,它们将是 n 的新值。然后循环再次执行,代码lines1[n]现在使用n的字符串值进行索引。