2011-12-23 80 views
2

我正在寫一個Python程序,創建一個9x9矩陣,其中所有的值都是0.然後,我必須手動輸入一個實際的值,我想在其中。 (這就是爲什麼我有所有的插入。)我試圖使用list.remove(x)命令與列表是矩陣和x是我想要刪除的值。我知道我輸入的x值是在矩陣中,但我不斷收到一個錯誤,說它不是。Python矩陣:值不在列表錯誤

這裏是我的代碼:

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和我還在學習。任何幫助你可能會給我不勝感激。

+0

對於矩陣的數值運算考慮使用[numpy](http://numpy.scipy.org/)。 – 2011-12-24 00:14:49

回答

0

變化:

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

到:

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

你要找的列表不是一個字符串;這是一個列表;沒有必要把它作爲一個字符串。

+0

Ohhhhhh。謝謝。哇,看着同樣的事情,你開始忽略細節!這個語法在3.0中是新的嗎? – cbbcbail 2011-12-23 22:55:59

+0

否;自從一開始,它一直是該語言的中流砥柱。 list.remove(x)只查找列表中的特定類型,並且如果它找到它,並且*然後*如果它與x匹配,則將其刪除。 – Makoto 2011-12-23 22:56:43

+0

哦。我只是想知道,因爲我回顧了一些舊論壇,他們以我用它的方式使用了它,這就是爲什麼我這樣做。 – cbbcbail 2011-12-23 22:58:56

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

列表文字?我認爲他們總是在Python中。 – 2011-12-23 22:50:34

+0

好的感謝您的正確定義矩陣的建議!這使事情變得更簡單。 – cbbcbail 2011-12-23 22:56:46

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]周圍沒有引號。