複数の値をまとめるリスト
Pythonを学び始めると、真っ先に扱うことになる代表的なデータ構造が「リスト」です。リストは、[](角括弧)を使って複数の値をまとめて管理するために用いられます。たとえば、
- 複数の数値をまとめて足し合わせたり平均を取る
- 名前やメッセージを順番に取り出して処理する
- 条件によってリストの要素を追加したり削除したりして動的に管理する
など、さまざまな用途で活躍する非常に重要なデータ型です。本記事では、初心者にも分かりやすいようにリストの基本的な使い方を解説します。特に、リストの作り方や要素へのアクセス方法など、基礎的な操作を中心に学んでいきましょう。
リストの作り方
Pythonにおけるリストは、[]
(角括弧)で要素を並べることで簡単に作成できます。カンマで区切って値を指定するだけです。リストには、数値や文字列、さらに他のリストを含めることもできます。以下に基本的なリストの作り方を示します。
# 空のリスト
empty_list = []
# 数値を含むリスト
numbers = [10, 20, 30, 40, 50]
# 文字列を含むリスト
words = ["apple", "banana", "cherry"]
# 複数のデータ型が混在したリスト(数値と文字列)
mixed = [1, "two", 3.0]
# リストの中にリスト(ネストされたリスト)
nested_list = [[1, 2], [3, 4, 5]]
このように、リストはさまざまな値を一つの変数としてまとめて扱えるので、コードをすっきりさせたり、処理を簡単にするのに非常に有用です。
要素へのアクセス方法
リストから特定の位置にある要素を取得するには、インデックス(添字)を使用します。Pythonのリストでは、最初の要素のインデックスが0になります。つまり、「先頭の要素を取り出すにはインデックス0を指定する」というのが大原則です。
numbers = [10, 20, 30, 40, 50]
# 先頭(インデックス0)の要素を取り出す
print(numbers[0]) # 10
# 2番目(インデックス1)の要素を取り出す
print(numbers[1]) # 20
# 5番目(インデックス4)の要素
print(numbers[4]) # 50
また、Pythonでは負のインデックスを使うこともできます。-1が「末尾の要素」を意味し、-2であれば「末尾から2番目の要素」というように指定できます。これは、リストの最後の要素を手軽に参照したいときに非常に便利です。
numbers = [10, 20, 30, 40, 50]
# 末尾の要素を取り出す
print(numbers[-1]) # 50
# 末尾から2番目の要素を取り出す
print(numbers[-2]) # 40
要素の範囲をまとめて取り出す(スライス)
リストから複数の要素をまとめて取り出す場合には、スライス構文(リスト[start:end]
)を利用します。スライスを使うと、指定した範囲の要素を新しいリストとして抽出できます。たとえば、start
番目からend-1
番目までの要素を取得できる仕組みです。
numbers = [10, 20, 30, 40, 50]
# 先頭から2番目(インデックス0〜1)までを取り出す
print(numbers[0:2]) # [10, 20]
# インデックス1〜3の要素を取り出す
print(numbers[1:4]) # [20, 30, 40]
# 先頭からインデックス2までを省略記法で取り出す
print(numbers[:3]) # [10, 20, 30]
# インデックス2から末尾まで
print(numbers[2:]) # [30, 40, 50]
スライスではステップ数を指定することもでき、numbers[start:end:step]
という形で利用できます。step
を指定すると一定間隔で要素を抜き出せるため、大きなリストの中から要素を飛び飛びに取り出す場合などに便利です。
要素の追加・変更・削除
リストは作成後に要素を追加したり変更したり、削除することが可能です。これはリストがミュータブル(mutable)なオブジェクトであるためです。以下は代表的なメソッドの例です。
- append: 末尾に要素を追加する
- insert: 指定したインデックスに要素を挿入する
- remove: 指定した値に合致する要素を削除する
- pop: 指定したインデックスの要素を取り出して削除する(引数なしで末尾を削除)
fruits = ["apple", "banana", "cherry"]
# 要素の追加
fruits.append("orange")
print(fruits) # ["apple", "banana", "cherry", "orange"]
# 指定した位置に挿入(インデックス1に"grape"を挿入)
fruits.insert(1, "grape")
print(fruits) # ["apple", "grape", "banana", "cherry", "orange"]
# 値が"cherry"の要素を削除
fruits.remove("cherry")
print(fruits) # ["apple", "grape", "banana", "orange"]
# インデックス1の要素を取り出して削除
popped_item = fruits.pop(1)
print(popped_item) # "grape"
print(fruits) # ["apple", "banana", "orange"]
また、リストの要素を書き換える場合は、単にインデックスを指定して代入することで実行できます。
numbers = [10, 20, 30]
numbers[1] = 99
print(numbers) # [10, 99, 30]
リストの便利なメソッドと操作
他にも、リストには以下のような便利な機能があります。
-
len関数:リストの長さ(要素数)を取得。
len_list = len(numbers)
-
in演算子:特定の要素がリストに含まれているかを判定。
"apple" in fruits
→ True/False -
count:指定した要素がリストにいくつ含まれているか数える。
numbers.count(99)
-
index:指定した要素が最初に出現するインデックスを返す。
numbers.index(99)
リスト内包表記
Pythonらしい書き方の一つに、リスト内包表記(list comprehension)という文法があります。これは、for文などを使ってリストを作る際にシンプルで可読性の高いコードを書くことを可能にします。
# 0から4までの数値を二乗したリストを生成する
squares = [i * i for i in range(5)]
print(squares) # [0, 1, 4, 9, 16]
# 文字列のリストから、文字数が5文字を超えるものだけを取り出す
words = ["apple", "banana", "fig", "grapefruit"]
long_words = [w for w in words if len(w) > 5]
print(long_words) # ["banana", "grapefruit"]
このように、内包表記を使うと、通常のfor文とif文を組み合わせた複雑な処理を1行で記述できるため、コードがスッキリするという利点があります。
まとめ
本記事では、Pythonにおけるリストの基本的な使い方について解説しました。リストは、プログラムを組む上で非常に頻繁に登場するデータ構造です。[]を使って簡単に作成でき、インデックスを使って要素にアクセスできるほか、要素の追加・削除・変更が柔軟に行える点が特徴です。また、スライスや内包表記などのPython特有の文法を活用すると、より簡潔で読みやすいコードを書くことができます。
リストの基本をしっかりと押さえておくと、後々の学習(タプルや辞書、集合などの他のコレクション、あるいはデータ分析や機械学習での大量データ処理)にも応用が効きます。まずは本記事で紹介した内容を実際にコードを書いて試し、リスト操作に慣れてみてください。
次のステップとして、リストだけでなくタプル、辞書、セットなど、Pythonにおける他のコレクション型も理解しておくと、より幅広いアプリケーションやデータ処理に対応できるようになります。引き続き学習を進め、Pythonのデータ構造に精通していきましょう。