質問するログイン新規登録

回答編集履歴

2

追記

2019/03/11 15:39

投稿

hayataka2049
hayataka2049

スコア30939

answer CHANGED
@@ -1,4 +1,4 @@
1
- 破壊的と言っても別にネガティブな意味があるのではなく、in-placeで処理できることを指します。
1
+ 破壊的と言っても別にネガティブな意味があるのではなく、要素自体の値を変化させて処理できることを指します。
2
2
 
3
3
  たとえば極めて頻繁に使う`list.append`も(あえて言えば)破壊的処理です。元のリストを破壊しないで新しい`list`を返したければ`original + [new_element]`のように書くしかありません。
4
4
 

1

追記

2019/03/11 15:39

投稿

hayataka2049
hayataka2049

スコア30939

answer CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  一応は以下のようなことを考慮して使い分けます。
6
6
 
7
- - 一般的に破壊的処理の方がパフォーマンス上は有利。メモリを余計に確保するためその時間的オーバーヘッドと余計なメモリ消費があること、破壊的処理の方が内部的に効率よく実装されていることなどが理由として挙げられます。
7
+ - 一般的に破壊的処理の方がパフォーマンス上は有利。メモリを余計に確保するためその時間的オーバーヘッドと余計なメモリ消費があること、破壊的処理の方が(特にpythonのlistのsortなどでは)内部的に効率よく実装されていることなどが理由として挙げられます。
8
8
  - 処理の意図によってはそもそも破壊的処理を使わないといけないこともあります。たとえば関数の引数に受け取ったリストをソートして、呼び出し元に影響を波及させたければ非破壊的処理ではどうにもなりません。
9
9
 
10
10
  目的とする処理によるのであって、一概に非破壊的に書けばいいという話ではありません。