
スポンサーリンク
Pythonのリスト(list)は、複数の要素を格納できる便利なデータ型です。本記事では、Pythonリストの追加・削除・結合・カウントというキーワードを軸に、リスト操作のあらゆる基本と応用を初心者にもわかりやすく解説します。実践的なサンプルコードとともに、リストの力を最大限に活用する方法を学びましょう。
リスト(list)の基本的な使い方
リストは、複数のデータを一つの変数にまとめて格納できて文字列、数値、他のリストなど、さまざまな型を混在させて扱うことができます。本セクションでリストの要素を作成、追加、削除する方法を紹介します。
リストを作成
Pythonのリストは、[]
(角括弧)を使って作成します。リスト内には異なるデータ型の要素を含めることができます。
# リストの作成numbers = [1, 2, 3, 4, 5]mixed_list = [1, "apple", 3.5, True]
print(numbers) # [1, 2, 3, 4, 5]print(mixed_list) # [1, 'apple', 3.5, True]
空のリストを作る場合は [] または list() を使います。
empty_list = []another_empty = list()
print(empty_list)print(another_empty)
リストの要素を追加
リストの要素はappend()、insert()、extend()を用いることで追加することができます。
append()の使い方
append(要素名)
は、リストの末尾に1つの要素を追加します。
fruits = ["apple", "banana"]fruits.append("cherry")print(fruits) # ['apple', 'banana', 'cherry']
insert()で任意の位置に挿入
指定した位置に要素を追加したい場合は insert(index, 要素名)
を使います。
fruits = ["apple", "banana", "cherry"]fruits.insert(1, "orange")print(fruits) # ['apple', 'orange', 'banana', 'cherry']
リストの要素を変更
Pythonのリストはミュータブル(変更可能)なデータ構造です。そのため、特定の要素を変更したり、複数の要素を一括で書き換えたりすることができます。
インデックスを指定して要素を変更
リストの特定の位置にある要素を別の値に変更することができます。
fruits = ["apple", "banana", "cherry"]fruits[1] = "orange"print(fruits) # ['apple', 'orange', 'cherry']
リストの要素を削除
Pythonのリストから要素を削除するには、目的や条件に応じていくつかの方法があります。
remove()で特定要素を削除
remove(要素名)
は、リスト内で最初に見つかった一致する値を削除します。
fruits = ["apple", "banana", "apple", "cherry"]fruits.remove("apple")print(fruits) # ['banana', 'apple', 'cherry']
⚠️ 該当要素がないと
ValueError
が発生するので注意!
pop()で位置を指定して削除
pop(index)
は、指定したインデックスの要素を削除し、同時にその値を返す便利なメソッドです。
fruits = ["apple", "banana", "cherry"]removed = fruits.pop(1)print(removed) # 'banana'print(fruits) # ['apple', 'cherry']
del文による削除
del
を使うと、スライスやインデックスを用いて柔軟に削除できます。
fruits = ["apple", "banana", "cherry", "kiwi"]del fruits[1:3]print(fruits) # ['apple', 'kiwi']
リストのスライス
リストのスライスを使うと、リストの一部を取得したり、特定の範囲の要素を抽出できます。
基本的なスライス
基本的なスライスの使い方は、取得したい要素の範囲を[開始:終了]
のように指定します。
# インデックス1から3までの要素を取得(終了インデックスは含まれない)numbers = [1, 2, 3, 4, 5, 6]sub_list = numbers[1:4]print(sub_list) # [2, 3, 4]
ステップを指定したスライス
ステップを指定してスライスする場合は[開始:終了:ステップ]
のように指定します。
# 2つおきに要素を取得(開始:終了:ステップ)numbers = [1, 2, 3, 4, 5, 6]step_list = numbers[0:6:2]print(step_list) # [1, 3, 5]
省略形を使ったスライス
最初のn要素を取得する場合は[:終了]
、n番目以降の要素を取得する場合は[開始:]
のように省略した指定方法も可能です。
numbers = [1, 2, 3, 4, 5, 6]# 最初の3要素を取得first_three = numbers[:3]print(first_three) # [1, 2, 3]
# 3番目以降の要素を取得last_part = numbers[3:]print(last_part) # [4, 5, 6]
# リスト全体をコピー(新しいリストを作成)copy_list = numbers[:]print(copy_list) # [1, 2, 3, 4, 5, 6]
逆順にするスライス
スライスでリストを逆順に並び替える場合は[::-1]
のように指定します。
numbers = [1, 2, 3, 4, 5, 6]# リストを逆順に取得reversed_list = numbers[::-1]print(reversed_list) # [6, 5, 4, 3, 2, 1]
リストの要素数をカウントする
count()の基本
特定の要素がリストに何回出現するかを調べたいときに便利です。
fruits = ["apple", "banana", "apple", "cherry"]print(fruits.count("apple")) # 2
len()で全体の要素数を取得
lenでリストの長さ(要素数)を取得することができます。
fruits = ["apple", "banana", "apple", "cherry"]print(len(fruits)) # 4
リスト(list)の応用的な使い方
Pythonリストの並び替えや検索の方法など、応用的な使い方を紹介します。
リストの結合
複数のリストを1つにまとめるテクニックを紹介します。
extend()によるリスト結合
リストに複数の要素を追加したい場合は extend()
が便利です。
fruits = ["apple", "banana", "apple", "cherry"]fruits.extend(["kiwi", "melon"])print(fruits) # ['apple', 'banana', 'apple', 'cherry', 'kiwi', 'melon']
+演算子を使った結合
簡単にリスト同士を合体させる方法です。
list1 = [1, 2]list2 = [3, 4]combined = list1 + list2print(combined) # [1, 2, 3, 4]
extend()と+演算子の違い
extend()
は元のリストを直接変更しますが、+
は新しいリストを作成します。
list1 = [1, 2]list1.extend([3, 4])print(list1) # [1, 2, 3, 4]
list1 = [1, 2]list2 = [3, 4]combined = list1 + list2print(list1) # [1, 2]print(list2) # [3, 4]print(combined) # [1, 2, 3, 4]
リストの内包表記
リストの内包表記を使うと、簡潔にリストを作成できます。
# 1から10までの平方数リストを作成squares = [x ** 2 for x in range(1, 11)]print(squares) # [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
リストのソート(並び替え)
numbers = [5, 2, 9, 1, 7]numbers.sort() # 昇順にソートprint(numbers) # [1, 2, 5, 7, 9]
numbers.sort(reverse=True) # 降順にソートprint(numbers) # [9, 7, 5, 2, 1]
リストの要素を検索
in演算子で要素がリスト内に存在するか調べることができます。
# リストの作成numbers = [9, 7, 5, 2, 1]# 指定した要素のインデックスを取得index = numbers.index(5)print(index) # 2
# 指定した要素が含まれているか判定exists = 3 in numbersprint(exists) # False
リストの中にリスト(多次元リスト)
リストの中にリストを含めることで、2次元や3次元のデータ構造を作ることができます。
# 2次元リストmatrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]print(matrix[1][2]) # 6(2行目の3列目)
リストでインデックス付き処理
ループ中にインデックスが欲しいときはenumerate()でforを回します。
fruits = ["apple", "banana", "cherry"]for index, fruit in enumerate(fruits): print(index, fruit)
複数リストを同時処理
複数のリストを一度に処理したい場合はzipを使用します。
names = ["Alice", "Bob"]scores = [90, 85]
for name, score in zip(names, scores): print(f"{name}: {score}")
リストのメモリ効率
Pythonのリストは、動的にサイズを変更できる便利なデータ構造ですが、メモリ効率を考慮することも重要です。
リストのメモリ使用量
リストは可変長のデータ構造であり、新しい要素を追加するたびにメモリを再確保することがあります。そのため、リストが大きくなるとメモリ使用量も増加します。
import sys
# リストのメモリ使用量を確認list_example = [i for i in range(1000)]print(sys.getsizeof(list_example)) # リストのメモリサイズ(バイト単位)
ジェネレータを使ったメモリ最適化
リストを使用すると、大量のデータを保持する際にメモリを大量に消費する可能性があります。そこで、ジェネレータを活用することで、メモリ使用量を抑えることができます。
import sys
# リストを使う場合(メモリを多く消費)squares_list = [x ** 2 for x in range(1000000)]print(squares_list[0]) # 0print(squares_list[1]) # 1print(squares_list[2]) # 4print(sys.getsizeof(squares_list)) # メモリサイズ(バイト単位)
# ジェネレータを使う場合(メモリ効率が良い)squares_gen = (x ** 2 for x in range(1000000))print(next(squares_gen)) # 0print(next(squares_gen)) # 1print(next(squares_gen)) # 4print(sys.getsizeof(squares_gen)) # メモリサイズ(バイト単位)
ジェネレータのメリット:
- 遅延評価: 必要なときに値を生成するため、無駄なメモリ消費を防げる。
- スケーラビリティ: 巨大なデータセットを扱う際に有効。
- パフォーマンス向上: メモリ割り当てが不要なため、特定の処理で速度が向上する。
このように、リストとジェネレータを使い分けることで、メモリ効率を向上させることが可能です。
リストとタプル・辞書の違い
Pythonでは、リストのほかにタプル(tuple)と辞書(dictionary)というデータ型もあります。それぞれの違いを見ていきましょう。
リストとタプル(Tuple)の違い
タプルは、リストと似ていますが、 変更ができない(イミュータブル) という特徴があります。
# タプルの作成tuple_example = (1, 2, 3, "apple")print(tuple_example) # (1, 2, 3, 'apple')
# インデックスでアクセス可能print(tuple_example[1]) # 2
# 要素の変更は不可(エラーになる)tuple_example[1] = 10 # TypeError: 'tuple' object does not support item assignment
タプルは、データの変更を防ぎたい場合や、辞書のキーとして使用する場合に便利です。
リストと辞書(Dictionary)の違い
リストが複数のデータを順番に格納するのに対して、辞書はキーと値のペアでデータを格納するデータ型です。
# 辞書の作成dict_example = {"name": "Alice", "age": 25, "city": "Tokyo"}print(dict_example) # {'name': 'Alice', 'age': 25, 'city': 'Tokyo'}
# 値の取得print(dict_example["name"]) # Alice
# 値の変更dict_example["age"] = 26print(dict_example) # {'name': 'Alice', 'age': 26, 'city': 'Tokyo'}
辞書は、データにラベル(キー)をつけて管理できるため、データを効率的に整理するのに役立ちます。
タプルと辞書の比較
データ型 | 特徴 |
---|---|
リスト | 順序あり・変更可能(ミュータブル) |
タプル | 順序あり・変更不可(イミュータブル) |
辞書 | 順序なし(Python 3.7以降は順序保証)・キーで管理 |
よくあるエラーとその対処法
IndexErrorへの対処
リストの範囲外のインデックスを指定するとエラーになります。
fruits = ["apple"]print(fruits[1]) # IndexError
対策:インデックスを使う前に len()
でチェックしましょう。
TypeError・ValueErrorなど
TypeError
: appendなどにリスト以外を渡すValueError
: removeで存在しない値を指定
エラー文を読んで冷静に原因を特定しましょう。
FAQ:よくある質問とその回答
Q1: append()
と extend()
の違いは?
A: append()
は1要素、extend()
は複数要素を追加する。
Q2: remove()
とpop()
はどう使い分ける?
A: 値で削除→remove()
、位置で削除→pop()
。
Q3: 複数のリストを結合するには?
A: +
、extend()
、itertools.chain()
のいずれかを使う。
Q4: 要素がリスト内に存在するか調べる方法は?
A: "apple" in fruits
のように in
演算子を使う。
Q5: 要素数が0のリストを判定するには?
A: if not fruits:
または len(fruits) == 0
を使用。
Q6: リストを逆順に並び替えるには?
A: fruits.sort(reverse=True)
または fruits[::-1]
。
Pythonリストまとめ
Pythonのリストは、柔軟なデータ構造です。本記事で紹介した基本操作を活用し、リストを使いこなしましょう!
実践コード例:よく使う操作まとめ
fruits = ["apple", "banana"]fruits.append("cherry")fruits.insert(1, "orange")fruits.extend(["kiwi", "melon"])fruits.remove("banana")popped = fruits.pop()count_apple = fruits.count("apple")total = len(fruits)
print(f"リスト: {fruits}")print(f"削除された要素: {popped}")print(f"appleの数: {count_apple}")print(f"要素数: {total}")
Pythonリストを使いこなすための学習リソース
Pythonユーザにお勧めの本
![]() |
スッキリわかるPython入門 第2版
新品価格
|

![]() |
新品価格
|

![]() |
VTuberサプーが教える! Python
新品価格
|

![]() |
Python1年生 第2版
新品価格
|

以上で本記事の解説を終わります。
よいITライフを!