リスト(list)は、複数のデータを順序付きで格納できるPythonの最も基本的なデータ構造です。数値、文字列、さらにはリスト自体など、あらゆる型のデータを混在させて格納できます。
この記事では、リストの作成方法から、要素の追加・削除・検索、スライス、便利なメソッドまで詳しく解説します。
基本的な使い方
リストは角括弧 [] で作成します。要素はカンマで区切ります。
Python
# リストの作成
fruits = ["りんご", "バナナ", "みかん"]
numbers = [1, 2, 3, 4, 5]
mixed = [1, "hello", True, 3.14] # 異なる型もOK
empty = [] # 空のリスト
print(fruits)
print(f"要素数: {len(fruits)}")
# インデックスでアクセス(0始まり)
print(fruits[0]) # りんご
print(fruits[-1]) # みかん(末尾)
# 要素の変更
fruits[1] = "ぶどう"
print(fruits)
実行結果
['りんご', 'バナナ', 'みかん']
要素数: 3
りんご
みかん
['りんご', 'ぶどう', 'みかん']
要素の追加と削除
Python
colors = ["赤", "青"]
# 末尾に追加
colors.append("緑")
print(colors)
# 指定位置に挿入
colors.insert(1, "黄")
print(colors)
# リストの結合
colors.extend(["白", "黒"])
print(colors)
# 要素の削除
colors.remove("黄") # 値を指定して削除
print(colors)
deleted = colors.pop() # 末尾を削除して返す
print(f"削除: {deleted}")
print(colors)
deleted = colors.pop(0) # インデックス指定で削除
print(f"削除: {deleted}")
print(colors)
実行結果
['赤', '青', '緑']
['赤', '黄', '青', '緑']
['赤', '黄', '青', '緑', '白', '黒']
['赤', '青', '緑', '白', '黒']
削除: 黒
['赤', '青', '緑', '白']
削除: 赤
['青', '緑', '白']
スライス
スライスを使うと、リストの一部を切り出せます。
Python
nums = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(nums[2:5]) # インデックス2から4まで
print(nums[:3]) # 先頭から2まで
print(nums[7:]) # 7から末尾まで
print(nums[::2]) # 2つおきに取得
print(nums[::-1]) # 逆順
実行結果
[2, 3, 4]
[0, 1, 2]
[7, 8, 9]
[0, 2, 4, 6, 8]
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
検索とソート
Python
numbers = [3, 1, 4, 1, 5, 9, 2, 6]
# 検索
print(3 in numbers) # 含まれるか: True
print(numbers.index(5)) # インデックス: 4
print(numbers.count(1)) # 出現回数: 2
# ソート
numbers.sort() # 昇順(元のリストを変更)
print(numbers)
numbers.sort(reverse=True) # 降順
print(numbers)
# 元のリストを変更せずにソート
original = [3, 1, 4, 1, 5]
sorted_list = sorted(original)
print(f"元: {original}")
print(f"ソート後: {sorted_list}")
実行結果
True
4
2
[1, 1, 2, 3, 4, 5, 6, 9]
[9, 6, 5, 4, 3, 2, 1, 1]
元: [3, 1, 4, 1, 5]
ソート後: [1, 1, 3, 4, 5]
sort()とsorted()の違い
sort()はリスト自体を変更(破壊的操作)し、sorted()は新しいリストを返します(非破壊的操作)。元のリストを保持したい場合はsorted()を使いましょう。
リストのコピーに注意
new_list = old_list では参照のコピーになり、片方を変更するともう片方も変わります。独立したコピーを作るには new_list = old_list.copy() または new_list = old_list[:] を使いましょう。
まとめ
- リストは
[]で作成し、異なる型のデータも格納できる append()で追加、remove()/pop()で削除- スライス
[start:stop:step]でリストの一部を切り出せる sort()で昇順・降順ソート、sorted()で非破壊的ソート- リストのコピーは
.copy()で独立したコピーを作る