2017-07-17 5 views
1

は、私はちょうど私が1,2,3の出力を取得しなければならないが、代わりにそれを返すために右スキップ入力リストからリストからゼロを削除する関数?

def no_zero(a): 
    pos=0 
    while (pos+1)<=len(a): 
     if a[pos] == "0": 
      a.remove[pos] 
     pos= pos +1 
    return a 

print(no_zero([0,1,0,2,0,3])) 

をゼロを削除する機能を必要としています。理由は何ですか?乾杯。

答えて

3

あなたはlist comprehensionを使用することができます。

def no_zero(a): 
    return [x for x in a if x != 0] 
print(no_zero([0,1,0,2,0,3])) 

あなたの代わりに整数(0)の文字列("0")にアイテムを比較しているので、また、あなたのコードは、現在動作していない理由があります。また、リストを反復するときにリストを修正しようとしています。つまり、インデックスがリストの元のインデックスに対応しておらず、結果が間違っています。

+0

また、値を期待する 'remove() 'にposを渡します。 –

+0

その行が何を言っているのですか? 0に等しくない場合に限り、文字列要素を自分自身に戻しますか? –

関連する問題