Pythonで配列に要素を追加する3つの基本的な方法

Pythonでリスト(配列)に要素を追加する基本的な方法をappend、insert、extendメソッドと演算子を使って詳しく解説します。

Learning Next 運営
11 分で読めます

Pythonで配列に要素を追加する3つの基本的な方法

みなさん、Pythonでリストに要素を追加するとき、どの方法を使っていますか?

「リストの最後に追加したい」「途中に挿入したい」「複数まとめて追加したい」 こんな場面で迷ったことはありませんか?

実は、Pythonには用途に応じた3つの基本的な方法があるんです。 この記事では、それぞれの使い方と使い分けを初心者向けにわかりやすく解説します。

読み終わる頃には、状況に応じて最適な方法を選べるようになりますよ!

append():リストの最後に1つ追加

まずは一番よく使う方法から

append()メソッドは、リストの末尾に1つの要素を追加する方法です。

最も基本的で使用頻度が高い方法なので、まずはこれを覚えましょう!

# リストの準備
fruits = ["apple", "banana", "orange"]
print(fruits) # ['apple', 'banana', 'orange']
# append()で末尾に要素を追加
fruits.append("grape")
print(fruits) # ['apple', 'banana', 'orange', 'grape']

この例では、果物のリストの最後に"grape"を追加しています。 とてもシンプルで直感的ですよね!

数値でも使えます

文字列だけでなく、数値でも同じように使えます。

# 数値リストの例
numbers = [1, 2, 3]
numbers.append(4)
print(numbers) # [1, 2, 3, 4]
# 小数点も追加可能
numbers.append(4.5)
print(numbers) # [1, 2, 3, 4, 4.5]

整数でも小数でも、どちらでも追加できます。

注意!リストを追加するとこうなります

ちょっと注意が必要なケースがあります。

# リストをappend()で追加すると...
colors = ["red", "blue"]
colors.append(["green", "yellow"])
print(colors) # ['red', 'blue', ['green', 'yellow']]

リストをappend()で追加すると、リスト自体が1つの要素になってしまいます。 これを「入れ子構造」と言います。

複数の要素を個別に追加したい場合は、次に説明するextend()を使いましょう。

insert():好きな場所に挿入

特定の位置に要素を挿入したいときに使います

insert()メソッドは、リストの好きな位置に要素を挿入できる方法です。

使い方は insert(位置, 追加する要素) という形です。

# リストの準備
animals = ["dog", "cat", "bird"]
print(animals) # ['dog', 'cat', 'bird']
# インデックス1の位置に要素を挿入
animals.insert(1, "rabbit")
print(animals) # ['dog', 'rabbit', 'cat', 'bird']

元々1番目にあった"cat"が右にずれて、"rabbit"が1番目に入りました。

先頭に追加する方法

リストの一番最初に要素を追加したい場合は、位置に0を指定します。

# インデックス0で先頭に追加
fruits = ["banana", "orange"]
fruits.insert(0, "apple")
print(fruits) # ['apple', 'banana', 'orange']

"apple"がリストの先頭に追加されました。

末尾に追加することもできます

面白いことに、リストの長さを超える数を指定すると、自動的に末尾に追加されます。

# リストの長さを超える位置を指定
numbers = [1, 2, 3]
numbers.insert(10, 4) # リストは3個しかないのに10番目を指定
print(numbers) # [1, 2, 3, 4]

リストには3個しか要素がないのに10番目を指定しました。 でも大丈夫!自動的に末尾に追加されます。

extend():複数をまとめて追加

複数の要素を一度に追加したいときに便利

extend()メソッドは、複数の要素を一度にリストに追加できる方法です。

append()とは違って、リストの中身を個別に展開して追加してくれます。

# リストの準備
colors = ["red", "blue"]
new_colors = ["green", "yellow", "purple"]
# extend()で複数の要素を追加
colors.extend(new_colors)
print(colors) # ['red', 'blue', 'green', 'yellow', 'purple']

new_colorsの中身が個別に追加されました。 append()だと入れ子になってしまいますが、extend()なら個別に追加してくれます。

文字列も使えます

文字列を指定すると、1文字ずつ要素として追加されます。

# 文字列の各文字を要素として追加
letters = ["a", "b"]
letters.extend("cde")
print(letters) # ['a', 'b', 'c', 'd', 'e']

"cde"という文字列が'c', 'd', 'e'に分かれて追加されました。

その他の種類も使えます

extend()は、「繰り返し処理できるもの」なら何でも使えます。

# タプルを使った例
numbers = [1, 2, 3]
numbers.extend((4, 5, 6))
print(numbers) # [1, 2, 3, 4, 5, 6]
# レンジを使った例
scores = [90, 85]
scores.extend(range(70, 76))
print(scores) # [90, 85, 70, 71, 72, 73, 74, 75]

タプル(丸括弧で囲まれたもの)やレンジ(連続した数値)も使えます。

演算子を使った方法もあります

+と+=を使う方法

メソッド以外にも、演算子を使ってリストに要素を追加する方法があります。

+演算子:新しいリストを作る

+演算子は、元のリストは変更せずに新しいリストを作ります。

# +演算子で新しいリストを作成
fruits = ["apple", "banana"]
new_fruits = fruits + ["orange", "grape"]
print(new_fruits) # ['apple', 'banana', 'orange', 'grape']
print(fruits) # ['apple', 'banana'] (元のリストは変更されない)

元のfruitsは変更されず、new_fruitsという新しいリストが作られます。

+=演算子:既存のリストに追加

+=演算子は、既存のリストに要素を追加します。

# +=演算子で既存のリストに追加
numbers = [1, 2, 3]
numbers += [4, 5]
print(numbers) # [1, 2, 3, 4, 5]

extend()メソッドと似た動作をします。

どの方法を使えばいいの?

用途に応じて選びましょう

それぞれの方法には得意な場面があります。

使い分けの基準をまとめてみました。

  • append(): 最後に1つだけ追加したいとき
  • insert(): 特定の位置に追加したいとき
  • extend(): 複数をまとめて追加したいとき

実際の使い分け例

TODOリストを管理する例で見てみましょう。

# TODOリストの管理例
todo_list = ["買い物", "掃除"]
# 1つのタスクを追加
todo_list.append("料理")
print(todo_list) # ['買い物', '掃除', '料理']

まずはappend()で1つのタスクを追加しました。

# 緊急タスクを先頭に追加
todo_list.insert(0, "会議準備")
print(todo_list) # ['会議準備', '買い物', '掃除', '料理']

緊急のタスクをinsert()で先頭に追加しました。

# 複数のタスクを追加
additional_tasks = ["洗濯", "読書", "運動"]
todo_list.extend(additional_tasks)
print(todo_list) # ['会議準備', '買い物', '掃除', '料理', '洗濯', '読書', '運動']

最後にextend()で複数のタスクをまとめて追加しました。

このように、状況に応じて適切な方法を選ぶことが大切です。

パフォーマンスの違いも知っておこう

速度の違いがあります

大量のデータを扱う場合は、どの方法が速いかも重要です。

append()が一番速い

# append()は最も高速
large_list = []
for i in range(1000000):
large_list.append(i)

append()は末尾に追加するだけなので、最も高速です。

insert()は位置によって速度が変わる

# 先頭への挿入は遅い(全要素をシフト)
numbers = [1, 2, 3, 4, 5]
numbers.insert(0, 0) # 全要素が右にシフト
# 末尾への挿入は速い
numbers.insert(len(numbers), 6) # append()と同じくらい速い

insert()は、先頭に近いほど遅くなります。 なぜなら、既存の要素を全部右にずらす必要があるからです。

末尾への挿入なら、append()と同じくらい速いです。

まとめ

Pythonでリストに要素を追加する3つの方法をご紹介しました。

それぞれの特徴を覚えておきましょう。

  • append(): 最後に1つ追加(一番よく使う)
  • insert(): 好きな位置に1つ追加
  • extend(): 複数をまとめて追加

最初はappend()から覚えて、慣れてきたら他の方法も使ってみてください。

実際にコードを書いて、動作を確認してみることをおすすめします。 きっと「なるほど!」と理解が深まりますよ。

ぜひPythonプログラミングを楽しんでくださいね!

関連記事