Pythonのappendメソッド|リストに要素を追加する基本

Pythonのappendメソッドを使ったリストへの要素追加方法を解説。基本的な使い方から応用例、他のメソッドとの違いまで初心者向けに説明します。

Learning Next 運営
20 分で読めます

「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は変更されていますが、resultNoneになっています。

これは重要なポイントなので、覚えておいてくださいね。

基本的な使い方をマスターしよう

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

最も混同しやすいのが、appendextendの違いです。

# 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

appendinsertの違いも覚えておきましょう。

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メソッドをマスターすることで、動的なデータ処理が効率的に行えるようになります。 ぜひ色々な場面で活用してみてくださいね!

関連記事