リストから負の数を削除しようとしています。私は2つの連続する負の数が取り除かれなかった問題にぶつかっていました。私のコードは非常に簡単です:反復 - Python
numbers = [-5, 1, -3, -1]
def remove_neg(num_list):
for item in num_list:
if item < 0:
num_list.remove(item)
print(remove_neg(numbers))
#[1, -1]
私は自分のコードの4つの異なるバージョンを試して、私の頭のうちのいくつかの毛を引っ張った後、オンラインで答えを見つけました。私が見つけた答えはr = numbers [:]と割り当てられ、最初のリストの代わりにrから項目が削除されました。
def remove_neg(num_list):
r = numbers [:]
for item in num_list:
if item < 0:
r.remove(item)
print(r)
この概念では、2つのリスト変数が別々のデータを指していることを理解しています。私が理解できないことは、私の初期のコードがうまくいかない理由です。 for i in numbers:
はリスト内のすべての項目を反復してはいけませんか?連続する2つの数字が同じように扱われないのはなぜですか?私は理由を探し求め、答えを見つけることができないように見えました。
AH!あなたの最初の文が私の頭の中で電球をクリックした!今私はそれを得る!返信とリストの理解の例に感謝します。 – jmleczko