无法在python中修改二维矩阵中的值

无法在python中修改二维矩阵中的值,python,matrix,Python,Matrix,我试图在python中修改二维矩阵(由一系列较小的序列表示)中的数据。矩阵值首先初始化为“0.0”(在下面的代码中显示为“当前”)。我有第二个包含实际数据点的二维矩阵,但是,这些数据点用“.”“C”和“H”表示。我编写了下面的代码,基本上将这些字符转换为正确的值,但遇到了一个错误“str对象不支持项分配”。我知道字符串是不可变的,但我不是在更改字符串的单个字符,而是删除整个字符串。代码如下: for rline in range(len(lineAppend)): for cline i

我试图在python中修改二维矩阵(由一系列较小的序列表示)中的数据。矩阵值首先初始化为“0.0”(在下面的代码中显示为“当前”)。我有第二个包含实际数据点的二维矩阵,但是,这些数据点用“.”“C”和“H”表示。我编写了下面的代码,基本上将这些字符转换为正确的值,但遇到了一个错误“str对象不支持项分配”。我知道字符串是不可变的,但我不是在更改字符串的单个字符,而是删除整个字符串。代码如下:

for rline in range(len(lineAppend)):
    for cline in range(len(lineAppend)):
        if lineAppend[rline][cline]==".":
            #print "is dot"
            lineAppend[rline][cline] == 0.0
            #lineAppend.remove(".")
            #ineAppend.insert("0.0")
        elif lineAppend[rline][cline]=="C":
            lineAppend[rline][cline] == 25.0
        elif lineAppend[rline][cline]=="H":
            lineAppend[rline][cline] == 100.0
lineAppend是通过读取文本文件填充的矩阵。它只是读取每一行并将其保存为序列。我试图将单个索引更改为上述值,但由于字符串是不可变的,所以我一直遇到错误。是否有其他方法将数据修改为所需值

以下是回溯:

    Traceback (most recent call last):
    File "/home/Desktop/python_projects/temp.py", line 172, in <module>
main()
    File "/home/Desktop/python_projects/temp.py", line 169, in main
read_config("plate.txt")
    File "/home/Desktop/python_projects/temp.py", line 110, in read_config
    if lineAppend[rline][cline]==".":
回溯(最近一次呼叫最后一次):
文件“/home/Desktop/python_projects/temp.py”,第172行,在
main()
文件“/home/Desktop/python_projects/temp.py”,主文件第169行
读取配置(“plate.txt”)
文件“/home/Desktop/python\u projects/temp.py”,第110行,在read\u config中
如果lineAppend[rline][cline]==”:

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

您正在将相等性测试与赋值混合使用:

if lineAppend[rline][cline]==".":
    lineAppend[rline][cline] == 0.0
注意两行如何使用
==
来测试相等性。另一方面,赋值使用一个
=

if lineAppend[rline][cline] == ".":
    lineAppend[rline][cline] = 0.0
您在整个代码中都在这样做;如果要指定,请使用单个等于符号

另外,要在矩阵上循环,可以直接循环。当需要分配给内部列表时,可以包含索引:

for rline in lineAppend:
    for i, cline in enumerate(rline):
        if cline == ".":
           rline[i] = 0.0
        elif cline == "C":
           rline[i] = 25.0
        elif cline == "H":
           rline[i] = 100.0
如果要使用映射,则可以用列表替换整个嵌套循环:

replacements = {'.': 0.0, 'C': 25.0, 'H': 100.0}
lineAppend = [[replacements.get(v, v) for v in rline] for rline in lineAppend]

您正在将相等性测试与赋值混合使用:

if lineAppend[rline][cline]==".":
    lineAppend[rline][cline] == 0.0
注意两行如何使用
==
来测试相等性。另一方面,赋值使用一个
=

if lineAppend[rline][cline] == ".":
    lineAppend[rline][cline] = 0.0
您在整个代码中都在这样做;如果要指定,请使用单个等于符号

另外,要在矩阵上循环,可以直接循环。当需要分配给内部列表时,可以包含索引:

for rline in lineAppend:
    for i, cline in enumerate(rline):
        if cline == ".":
           rline[i] = 0.0
        elif cline == "C":
           rline[i] = 25.0
        elif cline == "H":
           rline[i] = 100.0
如果要使用映射,则可以用列表替换整个嵌套循环:

replacements = {'.': 0.0, 'C': 25.0, 'H': 100.0}
lineAppend = [[replacements.get(v, v) for v in rline] for rline in lineAppend]

您正在将相等性测试与赋值混合使用:

if lineAppend[rline][cline]==".":
    lineAppend[rline][cline] == 0.0
注意两行如何使用
==
来测试相等性。另一方面,赋值使用一个
=

if lineAppend[rline][cline] == ".":
    lineAppend[rline][cline] = 0.0
您在整个代码中都在这样做;如果要指定,请使用单个等于符号

另外,要在矩阵上循环,可以直接循环。当需要分配给内部列表时,可以包含索引:

for rline in lineAppend:
    for i, cline in enumerate(rline):
        if cline == ".":
           rline[i] = 0.0
        elif cline == "C":
           rline[i] = 25.0
        elif cline == "H":
           rline[i] = 100.0
如果要使用映射,则可以用列表替换整个嵌套循环:

replacements = {'.': 0.0, 'C': 25.0, 'H': 100.0}
lineAppend = [[replacements.get(v, v) for v in rline] for rline in lineAppend]

您正在将相等性测试与赋值混合使用:

if lineAppend[rline][cline]==".":
    lineAppend[rline][cline] == 0.0
注意两行如何使用
==
来测试相等性。另一方面,赋值使用一个
=

if lineAppend[rline][cline] == ".":
    lineAppend[rline][cline] = 0.0
您在整个代码中都在这样做;如果要指定,请使用单个等于符号

另外,要在矩阵上循环,可以直接循环。当需要分配给内部列表时,可以包含索引:

for rline in lineAppend:
    for i, cline in enumerate(rline):
        if cline == ".":
           rline[i] = 0.0
        elif cline == "C":
           rline[i] = 25.0
        elif cline == "H":
           rline[i] = 100.0
如果要使用映射,则可以用列表替换整个嵌套循环:

replacements = {'.': 0.0, 'C': 25.0, 'H': 100.0}
lineAppend = [[replacements.get(v, v) for v in rline] for rline in lineAppend]
不是赋值,只是比较。换成

lineAppend[rline][cline] = 0.0
不是赋值,只是比较。换成

lineAppend[rline][cline] = 0.0
不是赋值,只是比较。换成

lineAppend[rline][cline] = 0.0
不是赋值,只是比较。换成

lineAppend[rline][cline] = 0.0

这里没有任务发生;你能给我们完整的追踪吗?这里没有任务;你能给我们完整的追踪吗?这里没有任务;你能给我们完整的追踪吗?这里没有任务;你能给我们看一下完整的回溯吗?当我把它改成赋值运算符时,我仍然得到“str不支持项目赋值”error@JeremyFisher:您需要向我们展示完整的回溯;您发布的代码没有分配任何内容,因此它不能成为异常的原因。我只是添加了回溯。即使将double equal更改为single equal,我仍然会得到错误,那么这是否意味着它可能是一个赋值错误?当我将其更改为赋值运算符时,我仍然会得到“str不支持项赋值”error@JeremyFisher:您需要向我们展示完整的回溯;您发布的代码没有分配任何内容,因此它不能成为异常的原因。我只是添加了回溯。即使将double equal更改为single equal,我仍然会得到错误,那么这是否意味着它可能是一个赋值错误?当我将其更改为赋值运算符时,我仍然会得到“str不支持项赋值”error@JeremyFisher:您需要向我们展示完整的回溯;您发布的代码没有分配任何内容,因此它不能成为异常的原因。我只是添加了回溯。即使将double equal更改为single equal,我仍然会得到错误,那么这是否意味着它可能是一个赋值错误?当我将其更改为赋值运算符时,我仍然会得到“str不支持项赋值”error@JeremyFisher:您需要向我们展示完整的回溯;您发布的代码没有分配任何内容,因此它不能成为异常的原因。我只是添加了回溯。即使在将double-equal更改为single-equal之后,我仍然不断得到错误,那么这是否意味着它可能是一个赋值错误?