2017-02-07 8 views
2

私は '0'を '0'に置き換えようとしていますが、 '0'を削除しようとするとエラーが表示されます私はこのコードのブロックを使用して、リストから「0」を削除しようとすると、それは...リストに2dリストから要素を取り除く - 偽のエラー - Python

grid = [['0','x','x','x'], 
     ['x','x','x','x'], 
     ['x','x','x','x'], 
     ['x','x','x','x'], 
     ['x','x','x','x'], 
     ['x','x','x','x']] 

ではありません。

for x in range(6): 
    grid[x].remove('0') 

#(I Know That It's Inefficient) 

私はこのエラーを取得する:

grid[x].remove('0') 
    ValueError: list.remove(x): x not in list 

私はそれは注目する価値があるかどうかわからないが、私は、たとえば、さまざまな方法を試した後、このエラーを受け取った:私はこれらの試みのすべてのために同じエラーを受け取ったと私は「0に書き換えている

grid.remove('0') 
#using no loops 

i = grid[x].index('0') 
del grid[x][i] 
#using the same for loop 

i = grid.index('0') 
del grid[i] 
#in the for loop 

'私の2次元配列で何度も、誰も私はこの簡単な作業を行うのを助けることができますか?

〜は

+1

あなたのグリッドに '0 'が要素でない行があります。それについてはっきりしないものは何ですか? –

+0

'remove(x)'は 'remove( '0')'と同じではありません –

答えて

0

あなたのプログラムが行をループして'0'を削除しようとしている〜ありがとうございます。これは初めて成功しましたが、それ以降はValueErrorがスローされます。次のプログラムが「削除済み!」という印刷方法に注意してください。一度:

>>> for x in range(6): 
...  grid[x].remove('0') 
...  print('removed!') 
... 
removed! 
Traceback (most recent call last): 
    File "<stdin>", line 2, in <module> 
ValueError: list.remove(x): x not in list 

グリッドからすべての'0'値を削除する方法はたくさんあります。ここでは、リストの内包表記を使用して一つの方法だ:それはあなたの'x'文字列に関連していない変数xを、使用しているため

>>> [[i for i in row if i != '0'] for row in grid] 
[['x', 'x', 'x'], ['x', 'x', 'x', 'x'], ['x', 'x', 'x', 'x'], ['x', 'x', 'x', 'x'], ['x', 'x', 'x', 'x'], ['x', 'x', 'x', 'x']] 
+0

ありがとう、本当に役立ちます –

0

エラーメッセージは、この場合には混乱しています。 Pythonのドキュメントから:

list.remove(x): Remove the first item from the list whose value is x. It is an error if there is no such item.

あなたのループは、グリッドのすべての行から「0」を削除しようとしますが、いくつかの行は「0」を持っていないのでremoveでエラーが発生します。

関連する問題