2011-12-23 10 views
2

私は9x9の行列を作成するPythonプログラムを作成しており、すべての値を0にしています。次に、手動で実際の値を入れなければなりません。 (それは私がすべての挿入物を持っている理由です)list.remove(x)コマンドを使用してリストを行列とし、xを削除しようとしている値にしようとしています。私は、私が入れているxの値が行列に入っていることを知っていますが、私はそれがそうではないというエラーを受けています。ここでPython Matrix:リストにない値のエラー

は私のコードです:ここでは

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はちょうどそれがでないことを見つけるように見えますとにかく行列。私は( "[0、0、0、0、0、0、0、0、0]")ここでは、あるmatrix.removeの場所に置くこの:

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/)の使用を検討してください。 –

答えて

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

+0

いいえ。それは最初から言語の柱となっています。 list.remove(x)はリスト内の特定の型だけを検索し、見つかった場合はxと一致する場合は*を返します。 – Makoto

+0

ああ私はいくつかの古いフォーラムを振り返っていたので、私はそれを使った方法を持っていたので、私はそれをやりました。 – cbbcbail

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であったと思う。 –

+0

マトリックスを正しく定義してアドバイスをいただきありがとうございます!それは物事をはるかに簡単にします。 – cbbcbail

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]の前後に引用符がないことに注意してください。