アカウント名:
パスワード:
[:]でコピー作らないと駄目よー詳しくはリファレンス参照:2.6 [python.org] 3だけど日本語化されてる。中身は同じ [python.org]
shallow copyをなめるループを回しながらオリジナルを削除すればよいということですかね。
for i, e in enumerate(l[:]): if e.startswith("f"): del l[i]
その場合リストの"i個目"がオリジナルとズレるので「del l[i]」がバグります。eがユニークで有る事を保証できるならeをキーにremoveするのが手っ取り早いです。(#3899890 [srad.jp])i個目に重要な意味が有る/データ数が多い等でdelを使うなら、末尾からループさせるか、iに削除した分のマイナス補正して下さい。(del l[i-削除済数]とか)もしくは、forループを諦めてwhileにし、削除時はiをカウントアップしないようなアルゴリズムにして下さい。
どれを選ぶかは、お好みで。
あーそりゃそうか要素数変わるからl[i]もズレますやね。
in placeで、という縛りがなければ新しいリストを作って置き換えることができるわけですが。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
人生unstable -- あるハッカー
駄目っです。リファレンス参照どぞ (スコア:1)
[:]でコピー作らないと駄目よー
詳しくはリファレンス参照:2.6 [python.org] 3だけど日本語化されてる。中身は同じ [python.org]
Re: (スコア:1)
shallow copyをなめるループを回しながらオリジナルを削除すればよいということですかね。
Re: (スコア:1)
その場合リストの"i個目"がオリジナルとズレるので「del l[i]」がバグります。
eがユニークで有る事を保証できるならeをキーにremoveするのが手っ取り早いです。(#3899890 [srad.jp])
i個目に重要な意味が有る/データ数が多い等でdelを使うなら、末尾からループさせるか、iに削除した分のマイナス補正して下さい。(del l[i-削除済数]とか)
もしくは、forループを諦めてwhileにし、削除時はiをカウントアップしないようなアルゴリズムにして下さい。
どれを選ぶかは、お好みで。
Re:駄目っです。リファレンス参照どぞ (スコア:1)
あーそりゃそうか要素数変わるからl[i]もズレますやね。
in placeで、という縛りがなければ新しいリストを作って置き換えることができるわけですが。