Pythonのリスト操作には様々な方法がありますが、その中でもappend
とextend
のパフォーマンスについて詳しく見ていきましょう。
appendとextendの基本
まず、append
とextend
の基本的な違いを理解しましょう。append
はリストに要素を一つずつ追加します。一方、extend
は別のリストの要素をまとめて追加します。
# appendの使用例
list = []
for i in range(N):
list.append(i)
# extendの使用例
list = []
list.extend(range(N))
パフォーマンス比較
さて、これらの操作のパフォーマンスを比較してみましょう。以下のコードは、それぞれの操作をN回繰り返し、その実行時間を計測します。
import time
N = 10000000
Time = 10
def list_append():
for _ in range(Time):
array = []
for _ in range(N):
array.append(1)
def list_extend():
for _ in range(Time):
array = []
array.extend([1 for _ in range(N)])
if __name__ == '__main__':
for function in [list_append, list_extend]:
start = time.time()
function()
print((time.time() - start) / Time)
このコードを実行すると、extend
の方がappend
よりも高速であることがわかります。これは、extend
が一度に複数の要素を追加するため、内部でのメモリ確保や要素のコピーが少なくて済むからです。
まとめ
Pythonのリスト操作には様々な方法がありますが、その中でもappend
とextend
は特によく使われます。しかし、これらの操作のパフォーマンスは大きく異なり、一般的にはextend
の方が高速です。したがって、パフォーマンスが重要な場合には、可能な限りextend
を使用することをお勧めします。