【Python】リストとスライス

【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]

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です