Python矩阵:列表中没有该值错误
我正在写一个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])
你要找的这个列表不是字符串,它是一个列表;所以不需要把它当字符串来处理。