我正在为一个特定的错误而挣扎
TypeError: list indices must be integers, not tuple
我已经看到了之前的一些问题,但这些问题都不能真正解释这个错误的含义。我知道它与创建数组/矩阵有关。 如能简要说明这一错误,将不胜感激。在
这是我的一段代码
def Zed(K,M):
if K == M:
return Rk(K) + Rkp + 2*1j*W*10**(-7.0)*np.log(Dkkp/Ncheck(K))
else:
return (Rk(K) + Rkp + 2*1j*W*10**(-7.0)*np.log(pythag(Conductors[K],Conductors[M],(Conductors[K+5]),((Conductors[M+5])-Dkkp))/Ncheck(K)))
for K in range(5):
for M in range(5):
ZMatrix[[K],[M]] = Zed(Conductors[K],Conductors[M]) #this is where the error apears
它抛出了我前面提到的错误。我把ZMatrix定义为
^{pr2}$
首先要初始化您的
ZMatrix
,我宁愿使用:编辑:我最初使用
*
在二维中重复生成,这与python FAQ: How do I create a multidimensional list中的指示不同,它只能用于一个维度,您需要使用列表理解(或for loops)来获得第二个维度。在其次,在取消对列表列表的引用时,需要将对不同列表的引用分开,
^{pr2}$ZMatrix[K][M]
,而不要使用奇怪的元组引用ZMatrix[[K],[M]]
。所以把最后一行改成:如果这不能解决所有问题,那么您可能需要查看
Zed()
函数中的公式构造。在这个:
没道理。您正在传递一个由两个列表组成的元组
([K],[M])
,作为列表ZMatrix
的索引。在也许你的意思是:
^{pr2}$更新:
当您有一个列表并希望从中提取元素时,可以在方括号内使用索引。在
本例中的索引应为整数:第一个元素为0,第二个元素为1,依此类推。在
元组(通常)是用逗号分隔的多个项,例如}。在
(1,2)
,或{当你写:
您正在传递列表
ZMatrix
一个元组。元组是([K],[M])
。在因此,错误消息“列表索引必须是整数,而不是元组”。在
但是,您可以这样做:
^{pr2}$其工作原理是
ZMatrix[K]
表示ZMatrix
的元素K
。由于ZMatrix
的定义方式,该元素本身就是另一个列表。然后我们可以将列表ZMatrix[K]
的元素M
称为ZMatrix[K][M]
。在访问Kth行中Mth列元素的正确语法是
^{pr2}$并确保定义了“导体”的名称。在
相关问题 更多 >
编程相关推荐