お世話になっております。いろんな言語で実装できそうなやり方でpythonでうまくいかない例をみつけたのでこの動作がどのような順序で行われているか知りたいです。
python
1a = [str(i) for i in range(10)].extend(['+','-','&','%']) 2print(a) # => None 3a = [str(i) for i in range(10)] 4a.extend(['+','-','&','%']) 5print(a) # => ['1','2','3','4','5','6','7','8','9','+','-','&','%']
extendを実行する前の配列は参照を保持する変数に代入されなかったのでガーベジコレクションが働いてメモリ解放が起きていると考えるのが自然でしょうか。それとも,リスト内包表記は別のプロセスで用意されるため,[str(i) for i in range(10)].extend(['+','-','&','%'])の実行前に解放されているということでしょうか。この辺りの動作について実際どのような動作をしているのかが分からないのでご教授していただきたいです。よろしくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2016/11/06 13:47 編集