Python矩阵:列表中没有该值错误

2 投票
3 回答
650 浏览
提问于 2025-04-17 08:56

我正在写一个Python程序,目的是创建一个9x9的矩阵,里面的所有值都是0。然后我需要手动输入我想要的实际值。(这就是我有很多插入的原因。)我想用list.remove(x)这个命令来删除矩阵中的某个值,其中list是矩阵,x是我想要删除的值。我知道我输入的x值在矩阵里,但我总是收到一个错误,提示说它不在里面。

这是我的代码:

matrix = [[0 for x in range (9)] for y in range (9)]
C = matrix.count([0, 0, 0, 0, 0, 0, 0, 0, 0])
matrix.insert(0, [0, 0, 0, 5, 0, 0, 0, 0, 6])
matrix.insert(0, [8, 0, 0, 0, 4, 7, 5, 0, 3])
matrix.insert(0, [0, 5, 0, 0, 0, 3, 0, 0, 0])
matrix.insert(0, [0, 7, 0, 8, 0, 0, 0, 0, 9])
matrix.insert(0, [0, 0, 0, 0, 1, 0, 0, 0, 0])
matrix.insert(0, [9, 0, 0, 0, 0, 4, 0, 2, 0])
matrix.insert(0, [0, 0, 0, 9, 0, 0, 0, 1, 0])
matrix.insert(0, [7, 0, 8, 3, 2, 0, 0, 0, 5])
matrix.insert(0, [3, 0, 0, 0, 0, 8, 0, 0, 0])
matrix.reverse()
for sublist in matrix:
    s = str(sublist)
    print (s)
print (C)
matrix.remove("[0, 0, 0, 0, 0, 0, 0, 0, 0]")

这是我一直收到的错误信息:

Traceback (most recent call last):
line 17, in <module>
matrix.remove("[0, 0, 0, 0, 0, 0, 0, 0, 0]")
ValueError: list.remove(x): x not in list

我还尝试过使用另一段代码,但Python似乎还是找不到它在矩阵里。我把这段代码放在matrix.remove("[0, 0, 0, 0, 0, 0, 0, 0, 0]")的地方。这里是:

if "[0, 0, 0, 0, 0, 0, 0, 0, 0]" in matrix:
    matrix.remove("[0, 0, 0, 0, 0, 0, 0, 0, 0]")

我对Python非常陌生,还在学习中。任何你能给我的帮助我都会非常感激。

3 个回答

1

你的矩阵其实是一个包含多个整数列表的列表。你想要做的事情是从这个列表中去掉一个字符串值。

matrix.remove("[0, 0, 0, 0, 0, 0, 0, 0, 0]")

"[0, 0, 0, 0, 0, 0, 0, 0, 0]" 这个是一个字符串。试着这样做:

matrix.remove([0, 0, 0, 0, 0, 0, 0, 0, 0])

注意在 [0,...,0] 周围没有引号。

4

在Python中,字符串和列表是两种不同的东西。你想要的是

matrix.remove([0, 0, ..., 0])

而不是

matrix.remove("[0, 0, ..., 0]")

不过,最简单的办法就是一开始就把矩阵构造正确。

matrix = [
    [0, 0, 0, 5, 0, 0, 0, 0, 6],
    [8, 0, 0, 0, 4, 7, 5, 0, 3],
    [0, 5, 0, 0, 0, 3, 0, 0, 0],
    ...]
0

把:

 matrix.remove("[0, 0, 0, 0, 0, 0, 0, 0, 0]")

改成:

 matrix.remove([0, 0, 0, 0, 0, 0, 0, 0, 0])

你要找的这个列表不是字符串,它是一个列表;所以不需要把它当字符串来处理。

撰写回答