アカウント名:
パスワード:
[:]でコピー作らないと駄目よー詳しくはリファレンス参照:2.6 [python.org] 3だけど日本語化されてる。中身は同じ [python.org]
l[i]を削除した時点でlと[:]でiがズレますよ。
そのとおり。リファレンス参照は関係ない話で、原因は 「iがズレますよ。」ですね
"foo bar baz"で[:]を使うと動くように見えるのはタダの勘違いです
"foo bar baz"ならもとのコードでも[:]でもどちらでも bar baz と正しくうごいているようにみえます
別コメントにあるように"foo foo foo"で試せば[:]でもエラーがでます
今回のテストデータでは正しくうごいているようにみえるだけです。
"foo foo bar"というテストデータでテストすれば解りますが、for中に要素数が変わると"foo bar"と2個目のfで始まる奴が残ります。
私がリンクしたリファレンスのNote(注釈)を読まないから「厄介なバグ」を見逃したり、作りこみます。
iがズレるのは、del l[i]をl.remove(e)みたいにiに依存しない形で変更する事で回避可能です。もしくはオフセットを持たすか、whileで手動でカウントアップするか。
removeの場合は意図的に残したみたいなパターンで重複が有り得る場合は破綻しますけど。例えば1個目のfooは残す場合、foo,foo,barな場合、1個目が消えちゃいます
テストデータが間違ってるじゃねーか。l = "foo foo foo".split(" ")
を
l = "foo foo bar".split(" ")
に置換してお読みください。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
身近な人の偉大さは半減する -- あるアレゲ人
駄目っです。リファレンス参照どぞ (スコア:1)
[:]でコピー作らないと駄目よー
詳しくはリファレンス参照:2.6 [python.org] 3だけど日本語化されてる。中身は同じ [python.org]
Re: (スコア:-1)
l[i]を削除した時点でlと[:]でiがズレますよ。
Re: (スコア:0)
そのとおり。リファレンス参照は関係ない話で、原因は 「iがズレますよ。」ですね
"foo bar baz"で[:]を使うと動くように見えるのはタダの勘違いです
"foo bar baz"ならもとのコードでも[:]でもどちらでも bar baz と
正しくうごいているようにみえます
別コメントにあるように"foo foo foo"で試せば[:]でもエラーがでます
Re: (スコア:1)
"foo bar baz"ならもとのコードでも[:]でもどちらでも bar baz と
正しくうごいているようにみえます
今回のテストデータでは正しくうごいているようにみえるだけです。
"foo foo bar"というテストデータでテストすれば解りますが、
for中に要素数が変わると"foo bar"と2個目のfで始まる奴が残ります。
私がリンクしたリファレンスのNote(注釈)を読まないから「厄介なバグ」を見逃したり、作りこみます。
iがズレるのは、
del l[i]
を
l.remove(e)
みたいにiに依存しない形で変更する事で回避可能です。
もしくはオフセットを持たすか、whileで手動でカウントアップするか。
removeの場合は意図的に残したみたいなパターンで重複が有り得る場合は破綻しますけど。
例えば1個目のfooは残す場合、foo,foo,barな場合、1個目が消えちゃいます
Re:駄目っです。リファレンス参照どぞ (スコア:1)
テストデータが間違ってるじゃねーか。
l = "foo foo foo".split(" ")
を
l = "foo foo bar".split(" ")
に置換してお読みください。