与特定的错误.tuple索引必须是整数,n

2024-09-30 03:25:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在为一个特定的错误而挣扎

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}$

Tags: inlogforreturn错误nprangerk
3条回答

首先要初始化您的ZMatrix,我宁愿使用:

ZMatrix =  [[0] * 5 for i in range(5)]

编辑:我最初使用*在二维中重复生成,这与python FAQ: How do I create a multidimensional list中的指示不同,它只能用于一个维度,您需要使用列表理解(或for loops)来获得第二个维度。在

其次,在取消对列表列表的引用时,需要将对不同列表的引用分开,ZMatrix[K][M],而不要使用奇怪的元组引用ZMatrix[[K],[M]]。所以把最后一行改成:

^{pr2}$

如果这不能解决所有问题,那么您可能需要查看Zed()函数中的公式构造。在

这个:

ZMatrix[[K],[M]]

没道理。您正在传递一个由两个列表组成的元组([K],[M]),作为列表ZMatrix的索引。在

也许你的意思是:

^{pr2}$

更新:

当您有一个列表并希望从中提取元素时,可以在方括号内使用索引。在

mylist[index]

本例中的索引应为整数:第一个元素为0,第二个元素为1,依此类推。在

元组(通常)是用逗号分隔的多个项,例如(1,2),或{}。在

当你写:

ZMatrix[[K],[M]]

您正在传递列表ZMatrix一个元组。元组是([K],[M])。在

因此,错误消息“列表索引必须是整数,而不是元组”。在

但是,您可以这样做:

^{pr2}$

其工作原理是ZMatrix[K]表示ZMatrix的元素K。由于ZMatrix的定义方式,该元素本身就是另一个列表。然后我们可以将列表ZMatrix[K]的元素M称为ZMatrix[K][M]。在

([K][M]) is a tuple. 

访问Kth行中Mth列元素的正确语法是

^{pr2}$

并确保定义了“导体”的名称。在

相关问题 更多 >

    热门问题