【Python】リストとスライス
Pythonの「リスト」と「スライス」は、初心者から上級者まで知っておきたい非常に重要な要素です。このページでは、リストとスライスについて詳しく解説し、多くの例を通じて理解を深めていきます。
目次
リストの基本
リストはPythonで使える可変長のシーケンス型データ構造で、複数の値を一つの変数にまとめて扱うことができます。リストは角括弧 ([]
) を使って作成し、要素はカンマ (,
) で区切ります。
# リストの例
numbers = [1, 2, 3, 4, 5]
strings = ["apple", "banana", "cherry"]
mixed = [1, "apple", True]
リストの中には、異なる型のデータを混在させることもできます。
リストの基本操作
リストにはさまざまな操作が可能です。以下に主な操作を紹介します。
- リストの長さを取得する:
len()
# 長さを取得
numbers = [1, 2, 3, 4, 5]
print(len(numbers)) # 出力: 5
append()
# 要素を末尾に追加
numbers.append(6)
print(numbers) # 出力: [1, 2, 3, 4, 5, 6]
insert()
# インデックスを指定して挿入
numbers.insert(2, 99)
print(numbers) # 出力: [1, 2, 99, 3, 4, 5, 6]
remove()
や pop()
# 要素の削除
numbers.remove(99)
print(numbers) # 出力: [1, 2, 3, 4, 5, 6]
# インデックスを指定して削除
numbers.pop(3)
print(numbers) # 出力: [1, 2, 3, 5, 6]
ネストされたリスト
リストの中にリストを含めることも可能です。これをネストされたリストと呼びます。
# ネストされたリスト
nested_list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
# 要素へのアクセス
print(nested_list[0]) # 出力: [1, 2, 3]
print(nested_list[1][2]) # 出力: 6
スライスの基本
スライスを使うと、リストの一部分を簡単に取り出すことができます。スライスの構文は start:end
です。
# スライスの例
numbers = [10, 20, 30, 40, 50]
print(numbers[1:4]) # 出力: [20, 30, 40]
注意: スライスは start
から end
の直前までを含みます。
スライスのステップ
スライスにはステップ(間隔)を指定することもできます。構文は start:end:step
です。
# ステップを指定したスライス
numbers = [10, 20, 30, 40, 50]
print(numbers[::2]) # 出力: [10, 30, 50]
負のステップを使うとリストを逆順に取得できます。
# 逆順スライス
print(numbers[::-1]) # 出力: [50, 40, 30, 20, 10]
スライスを使ったリストの修正
スライスを使ってリストの一部を修正することもできます。
# スライスによる修正
numbers = [1, 2, 3, 4, 5]
numbers[1:4] = [20, 30, 40]
print(numbers) # 出力: [1, 20, 30, 40, 5]
スライスによるリストのコピー
スライスを使ってリスト全体をコピーすることができます。
# リストのコピー
original = [1, 2, 3, 4, 5]
copy = original[:]
print(copy) # 出力: [1, 2, 3, 4, 5]
この方法でコピーすると、元のリストに影響を与えません。
具体例
最後に、これまで学んだ内容を応用した例をいくつか紹介します。
# リスト操作とスライスの応用
numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# 偶数のみを取得
evens = numbers[::2]
print(evens) # 出力: [0, 2, 4, 6, 8]
# 最初の3つの要素を逆順で取得
first_three_reversed = numbers[2::-1]
print(first_three_reversed) # 出力: [2, 1, 0]
# 中央部分を置き換え
numbers[3:7] = [99, 100, 101]
print(numbers) # 出力: [0, 1, 2, 99, 100, 101, 7, 8, 9]