Pythonのappendメソッド|リストに要素を追加する基本
Pythonのappendメソッドを使ったリストへの要素追加方法を解説。基本的な使い方から応用例、他のメソッドとの違いまで初心者向けに説明します。
「Pythonでリストに新しい要素を追加したい!」 そんな時に使うのが、appendメソッドです。
「appendって何?」 「どうやって使うの?」 「他の方法との違いは?」
こんな疑問を持っている方も多いですよね。
この記事では、Pythonのappendメソッドについて、基礎から実用例まで分かりやすく解説します。 読み終えれば、リストへの要素追加がバッチリできるようになりますよ!
appendメソッドって何?
appendメソッドは、リストの最後に新しい要素を1つ追加するメソッドです。
簡単に言うと、「リストの末尾に何かを付け足す」機能なんです。
# 基本的な使い方fruits = ['りんご', 'バナナ']print(f"元のリスト: {fruits}")
fruits.append('オレンジ')print(f"追加後: {fruits}")
このコードでは、果物のリストに新しい果物を追加しています。
最初にfruits
リストに「りんご」と「バナナ」を入れて、append('オレンジ')
で「オレンジ」を追加。
結果として、リストの最後に「オレンジ」が追加されます。
実行すると、こんな結果になります:
元のリスト: ['りんご', 'バナナ']
追加後: ['りんご', 'バナナ', 'オレンジ']
appendの重要な特徴
appendメソッドには、覚えておきたい3つの特徴があります:
- 元のリストを直接変更する(新しいリストは作らない)
- 戻り値はNone(何も返さない)
- 1つの要素のみを追加可能
# 戻り値の確認numbers = [1, 2, 3]result = numbers.append(4)
print(f"numbers: {numbers}") # [1, 2, 3, 4]print(f"result: {result}") # None
この例では、append
を実行した後のnumbers
は変更されていますが、result
はNone
になっています。
これは重要なポイントなので、覚えておいてくださいね。
基本的な使い方をマスターしよう
appendの基本的な使い方をパターン別に見ていきましょう。
数値を追加する
まずは、数値をリストに追加する方法です。
# 空のリストから始めるnumbers = []print(f"初期状態: {numbers}")
# 1つずつ数値を追加numbers.append(10)print(f"10を追加: {numbers}")
numbers.append(20)print(f"20を追加: {numbers}")
numbers.append(30)print(f"30を追加: {numbers}")
このコードでは、空のリストから始めて数値を順番に追加しています。
append(10)
で10を追加、append(20)
で20を追加、といった具合です。
小数点の数値も同じように追加できます。
実行結果はこうなります:
初期状態: []
10を追加: [10]
20を追加: [10, 20]
30を追加: [10, 20, 30]
文字列を追加する
次は、文字列をリストに追加してみましょう。
# 名前を管理するリストnames = []
# 名前を順次追加names.append('田中')names.append('佐藤')names.append('鈴木')
print(f"名前リスト: {names}")
# 長い文字列も追加可能names.append('プログラミング太郎')print(f"追加後: {names}")
文字列の追加も数値と同じように簡単です。
append('田中')
で「田中」を追加、append('佐藤')
で「佐藤」を追加します。
文字列の長さは関係ありません。
結果はこうなります:
名前リスト: ['田中', '佐藤', '鈴木']
追加後: ['田中', '佐藤', '鈴木', 'プログラミング太郎']
色々なデータ型を混ぜて追加
Pythonのリストは、異なるデータ型を混ぜて保存できます。
# 空のリストから始めるmixed_list = []
# 様々なデータ型を追加mixed_list.append(42) # 整数mixed_list.append('こんにちは') # 文字列mixed_list.append(3.14) # 小数mixed_list.append(True) # ブール値
print("混在リスト:")for i, item in enumerate(mixed_list): print(f" {i}: {item}")
このコードでは、数値、文字列、小数、ブール値を1つのリストに追加しています。
append(42)
で整数、append('こんにちは')
で文字列といった具合です。
Pythonでは、これが普通にできちゃうんです。
実行すると:
混在リスト:
0: 42
1: こんにちは
2: 3.14
3: True
とても柔軟ですよね!
実用的な活用例
実際の開発でよく使われるappendの活用例を見てみましょう。
買い物リストを作ってみよう
ユーザーが入力したアイテムを収集する例です。
def create_shopping_list(): """買い物リストを作成する関数""" shopping_list = [] print("買い物リストを作成します") print("アイテム名を入力してください('quit'で終了)") while True: item = input("アイテム: ") if item.lower() == 'quit': break if item.strip(): # 空でない場合のみ追加 shopping_list.append(item) print(f"'{item}' を追加しました") else: print("空のアイテムは追加できません") print("📝 買い物リスト:") for i, item in enumerate(shopping_list, 1): print(f" {i}. {item}") return shopping_list
この関数は、ユーザーから商品名を受け取ってリストに追加していきます。
while True:
で無限ループを作り、input()
でユーザーからの入力を受け取ります。
入力された商品名をshopping_list.append(item)
でリストに追加。
「quit」と入力されたらbreak
でループを終了します。
テストスコアの分析
スコアを分類する実用的な例も見てみましょう。
def analyze_test_scores(): """テスト結果を分析する関数""" # テストスコアのサンプルデータ raw_scores = [85, 92, 78, 96, 88, 74, 91, 83, 79, 95] # 分析結果を格納するリスト high_scores = [] # 90点以上 medium_scores = [] # 70-89点 low_scores = [] # 70点未満 # スコアを分類 for score in raw_scores: if score >= 90: high_scores.append(score) elif score >= 70: medium_scores.append(score) else: low_scores.append(score) # 結果の表示 print("📊 テストスコア分析結果:") print(f"🏆 優秀(90点以上): {high_scores}") print(f"📚 普通(70-89点): {medium_scores}") print(f"📖 要努力(70点未満): {low_scores}")
# 実行してみようanalyze_test_scores()
この関数は、テストのスコアを3つのグループに分けています。
for score in raw_scores:
で各スコアをチェック。
if score >= 90:
で90点以上ならhigh_scores.append(score)
で優秀グループに追加。
同じように、70〜89点なら普通グループ、70点未満なら要努力グループに分けています。
実行すると:
📊 テストスコア分析結果:
🏆 優秀(90点以上): [92, 96, 91, 95]
📚 普通(70-89点): [85, 78, 88, 74, 83, 79]
📖 要努力(70点未満): []
appendと他のメソッドとの違い
appendと似たようなメソッドがあるので、違いを理解しておきましょう。
append vs extend
最も混同しやすいのが、append
とextend
の違いです。
# appendの場合list1 = [1, 2, 3]list1.append([4, 5])print(f"append使用: {list1}")# 結果: [1, 2, 3, [4, 5]] ← リスト全体が1つの要素として追加
# extendの場合list2 = [1, 2, 3]list2.extend([4, 5])print(f"extend使用: {list2}")# 結果: [1, 2, 3, 4, 5] ← 各要素が個別に追加
appendは「何でも1つの要素として」追加します。 リストを渡すと、そのリスト全体が1つの要素になっちゃいます。
extendは「リストの中身を展開して」追加します。 リストを渡すと、その中の要素を個別に追加してくれます。
実際の使い分けを見てみましょう:
# 学生名簿の管理class_a = ['太郎', '花子']new_students = ['次郎', '三郎']
# appendを使った場合(間違った使い方)class_a_wrong = class_a.copy()class_a_wrong.append(new_students)print(f"append使用(間違い): {class_a_wrong}")# 結果: ['太郎', '花子', ['次郎', '三郎']]
# extendを使った場合(正しい使い方)class_a_correct = class_a.copy()class_a_correct.extend(new_students)print(f"extend使用(正しい): {class_a_correct}")# 結果: ['太郎', '花子', '次郎', '三郎']
新しい学生を追加する場合、extend
を使うのが正解ですね。
append vs insert
append
とinsert
の違いも覚えておきましょう。
numbers = [1, 2, 3]
# appendは常に末尾に追加numbers_append = numbers.copy()numbers_append.append(4)print(f"append使用: {numbers_append}")# 結果: [1, 2, 3, 4]
# insertは指定位置に挿入numbers_insert = numbers.copy()numbers_insert.insert(1, 4) # インデックス1の位置に4を挿入print(f"insert使用: {numbers_insert}")# 結果: [1, 4, 2, 3]
appendは必ず最後に追加。 insertは好きな位置に挿入できます。
使い分けの例:
# 待ち行列の管理queue = ['田中', '佐藤', '鈴木']
# 通常の順番待ち(末尾に追加)queue_normal = queue.copy()queue_normal.append('高橋')print(f"通常追加: {queue_normal}")# 結果: ['田中', '佐藤', '鈴木', '高橋']
# 緊急割り込み(先頭に挿入)queue_emergency = queue.copy()queue_emergency.insert(0, '緊急・山田')print(f"緊急挿入: {queue_emergency}")# 結果: ['緊急・山田', '田中', '佐藤', '鈴木']
通常はappend
、特別な位置に入れたい時はinsert
を使います。
appendの応用テクニック
appendをもっと効果的に使うテクニックをご紹介します。
条件付きでリストを作成
特定の条件を満たすものだけをリストに追加する方法です。
# 偶数だけを集めるnumbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]even_numbers = []
for num in numbers: if num % 2 == 0: # 2で割り切れる(偶数)なら even_numbers.append(num)
print(f"偶数リスト: {even_numbers}")# 結果: [2, 4, 6, 8, 10]
この例では、if num % 2 == 0:
で偶数かどうかをチェック。
偶数だけをeven_numbers.append(num)
で追加しています。
同じことを、もっと簡潔に書く方法もあります:
# リスト内包表記を使った方法even_numbers_short = [num for num in numbers if num % 2 == 0]print(f"内包表記: {even_numbers_short}")
どちらも同じ結果になりますが、用途に応じて使い分けましょう。
ネストしたリストの作成
リストの中にリストを入れる方法も見てみましょう。
# 2次元リスト(行列)の作成matrix = []
# 行を追加matrix.append([1, 2, 3])matrix.append([4, 5, 6])matrix.append([7, 8, 9])
print("行列:")for i, row in enumerate(matrix): print(f" 行{i+1}: {row}")
このコードでは、リストの中にリストを追加して2次元リストを作成。
matrix.append([1, 2, 3])
で1行目を追加、といった具合です。
実行すると:
行列:
行1: [1, 2, 3]
行2: [4, 5, 6]
行3: [7, 8, 9]
関数と組み合わせた高度な使い方
関数と組み合わせると、もっと柔軟な処理ができます。
def process_and_append(target_list, value, processor_func): """値を処理してからリストに追加""" processed_value = processor_func(value) target_list.append(processed_value) return processed_value
def square(x): """数値を2乗する""" return x ** 2
def uppercase(text): """文字列を大文字にする""" return text.upper()
# 数値の2乗を追加numbers = []for num in [1, 2, 3, 4, 5]: squared = process_and_append(numbers, num, square) print(f"{num} → {squared}")
print(f"結果: {numbers}")
この例では、process_and_append
関数が値を処理してからリストに追加しています。
square
関数で2乗処理、uppercase
関数で大文字変換など、色々な処理を組み合わせられます。
実行すると:
1 → 1
2 → 4
3 → 9
4 → 16
5 → 25
結果: [1, 4, 9, 16, 25]
よくあるエラーと対処法
appendを使う時によく遭遇するエラーと、その対処法をお教えします。
エラー1:文字列にappendしようとする
# ❌ 間違った例try: text = "hello" text.append("world") # エラー!except AttributeError as e: print(f"エラー: {e}") print("文字列にはappendメソッドがありません")
# ✅ 正しい例text_list = ["hello"]text_list.append("world")print(f"正解: {text_list}")
文字列にはappend
メソッドがありません。
リストを使うか、文字列なら+
で結合しましょう。
エラー2:Noneにappendしようとする
# ❌ 間違った例try: my_list = None my_list.append("item") # エラー!except AttributeError as e: print(f"エラー: {e}") print("Noneにはappendメソッドがありません")
# ✅ 正しい例my_list = [] # 空のリストで初期化my_list.append("item")print(f"正解: {my_list}")
リストがNone
になっているとappend
できません。
必ず空のリスト[]
で初期化しましょう。
エラー3:タプルにappendしようとする
# ❌ 間違った例try: my_tuple = (1, 2, 3) my_tuple.append(4) # エラー!except AttributeError as e: print(f"エラー: {e}") print("タプルは変更できません")
# ✅ 正しい例my_list = list(my_tuple) # タプルをリストに変換my_list.append(4)print(f"正解: {my_list}")
タプルは変更できないので、リストに変換してからappend
しましょう。
まとめ:appendをマスターしよう!
Pythonのappendメソッドについて詳しく解説しました。
appendの基本:
my_list = []my_list.append(要素) # リストの末尾に要素を追加
重要なポイント:
- 元のリストを直接変更する
- 1つの要素のみを追加(複数はextendを使用)
- 戻り値はNone
- 任意のデータ型を追加可能
主な活用場面:
- ユーザー入力の収集
- データの分類・フィルタリング
- 動的なリスト作成
- ファイル処理でのデータ蓄積
他のメソッドとの使い分け:
- append: 1つの要素を末尾に追加
- extend: 複数の要素を末尾に追加
- insert: 指定位置に要素を挿入
appendメソッドをマスターすることで、動的なデータ処理が効率的に行えるようになります。 ぜひ色々な場面で活用してみてくださいね!