ユーニックス総合研究所

  • home
  • archives
  • python-append-tsukaikata

Pythonのリストのappend()の使い方【初心者向け完全解説】

  • 作成日: 2022-05-05
  • 更新日: 2023-12-25
  • カテゴリ: Python

Pythonのリストのappend()の使い方

Pythonではリスト(list)を使うことができます。
リストを使うと異なるデータを同じリストにまとめることが可能です。

リストにデータを追加する際に使われるのが「append()」というリストのメソッドです。
このappend()を使うとリストにデータを追加できます。

この記事ではリストのappend()の使い方について詳しく解説します。

関連記事

頭が悪い人のPythonのevalの使い方
頭がいい人のPythonのexitの使い方
状態遷移による文字列パースのテクニック【Python】

頭が悪い人のPythonのevalの使い方
頭がいい人のPythonのexitの使い方
状態遷移による文字列パースのテクニック【Python】

append()でリストにデータを追加する

↓のようなリストがありますが、これにデータを追加します。

lis = [1, 2, 3]  

↓のようにlis.append(4)とやるとリストにデータを追加できます。

lis = [1, 2, 3]  
lis.append(4)  

print(lis)  # [1, 2, 3, 4]  

append()渡せるデータは制限はありません。
整数、実数、文字列、リスト、辞書など、あらゆるデータを渡すことができます。

lis = []  
lis.append(1)  
lis.append(2.34)  
lis.append('Hey')  
lis.append([3, 2, 1])  
lis.append({'a': 1, 'b': 2})  

print(lis)  
# [1, 2.34, 'Hey', [3, 2, 1], {'a': 1, 'b': 2}]  

appendの性能

Pythonのリストのappend()一般的に遅いと言われています。
そのためappend()を頻繁に呼び出すコードは速度に影響が出る可能性があります。
ただ、普通のスクリプトを書く分にはそこまで神経質になる必要はありません。

感覚的に「append, 遅いのか~」ぐらいに考えていただいて問題ありません。

たとえば数列を生成してリストに保存したい、というケースです。
こういう場合はリスト内方表記などを使ったほうが早くなります。
あとrange()を使う方法もあります。

↓のようなコードであなたの環境で性能を比較してみてください。

import time  

N = 10000000  

# append  
start = time.time()  
lis = []  

for i in range(N):  
    lis.append(i)  

calc_time = time.time() - start  
print('append', calc_time)  

# リスト内包表記  
start = time.time()  
lis = [i for i in range(N)]  
calc_time = time.time() - start  
print('リスト内包表記', calc_time)  

# range  
start = time.time()  
lis = list(range(N))  
calc_time = time.time() - start  
print('range', calc_time)  

筆者の環境では↑のコードは↓のように出力されます。

append 0.673255443572998  
リスト内包表記 0.4084479808807373  
range 0.22179508209228516  

結果を見るとrange()が一番早いですね。
これはWindowsのWSL2のUbuntu20.04で実行した結果です。
Windows環境やMac環境ではまた違った結果になると思われます。

こういったテストは環境にけっこう左右されます。
あっちの環境とこっちの環境で同じコードを実行したら結果に差が出た、というようなことがよくあります。
ですのでスクリプトを動かしたい環境でコードをテストして、検討してみてください。

テストコードは1回だけでなく、何回か計測してその平均を取る、というのがよりベターかと思われます。

extend()でリストを結合する

append()と関連するメソッドとしてextend()があります。
これはリストの末尾に別のリストを連結するメソッドです。

↓のように使います。

lis = [1, 2, 3]  

lis.extend([4, 5, 6])  

print(lis)  # [1, 2, 3, 4, 5, 6]  

↑の結果を見ると[1, 2, 3]というリストに[4, 5, 6]というリストが結合されているのがわかります。
複数のデータを同時にリストに追加したい場合はこのようにextend()が便利です。

insert()でリストの先頭にデータを追加する

これもappend()に関連するメソッドですがinsert()というメソッドもあります。
これを使うとリストの先頭にデータを追加することができます。

たとえば↓のようにです。

lis = [1, 2, 3]  

lis.insert(0, 4)  

print(lis)  # [4, 1, 2, 3]  

lis.insert(0, 4)の第1引数は挿入先のインデックス、第2引数は挿入するデータです。
このコードでは0番目の位置にデータ4が挿入されます。

おわりに

今回はリストのappend()の使い方を解説しました。
リストにデータを追加したい場合はappend()を使っておきましょう。

数列などを生成したい場合はリスト内方表記やrange()使ったほうが楽です。
また、環境によりますが速度面でもそのほうが有利な場合があります。

🦝 < append()でデータを追加しよう

🐭 < 「append」は「追加する」って意味だよ