-4

我的主程序有问题:

E, back = dict(), dict()

for C in range(cols+1): 
    E[0,C], back[0,C] = m[0,C], None

哪个返回我这个错误:

TypeError:列表索引必须是整数,而不是元组

我很困惑,因为我清楚地初始化了字典而不是列表。

这个错误是关于什么的,bot E 和 back 是第一行中所述的字典。但是当我尝试添加元素时,它会给我一个 LIST 错误?

编辑---“m”是像素数组“cols”是len(m [0])我的代码的目的是对存储在m中的图像执行垂直Seam Carving,其中m [x] [y]是 x,y 位置像素的灰度。我不想要/不需要缝雕刻算法的帮助,但是这个错误信息现在让我发疯,没有任何意义。

好的,我在编辑中更正了自己......我试图将 m 作为字典访问,它确实是一个数组。真丢人。

4

2 回答 2

4

您还没有显示所有代码,但我猜那m是一个列表。

于 2012-05-13T15:26:40.830 回答
3

你说m的是一个列表列表。Python 中访问子列表元素的语法不是[a, b]it's [a][b]

m[0,C]表示访问m由元组索引的元素(0, C)

您想要的是获取 的元素0m然后获取C该元素的元素,因此m[0][C].

为了清楚地表明这一点:

>>> a = [list(range(5)) for _ in range(5)]
>>> a
[[0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4]]
>>> a[0, 2]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: list indices must be integers, not tuple
>>> a[0][2]
2

您可以看到该错误完全有意义。

于 2012-05-13T15:33:28.473 回答