Pythonでパターンマッチングと演算子をマスターする

この記事では、Python言語におけるパターンマッチングと演算子の関係について深掘りします。具体的なコード例とその解説、応用例を含めています。

目次

パターンマッチングとは

Python 3.10から導入されたパターンマッチングは、データの形や構造を用いて条件分岐を行う機能です。これにより、より簡潔で可読性の高いコードが書けます。

基本的な使い方

match x:
    case 0:
        print("x is zero")
    case 1:
        print("x is one")
    case _:
        print("x is something else")

この基本的な例では、変数`x`が0, 1, またはそれ以外であるかをパターンマッチングで判断しています。

演算子との関係

and演算子

match x:
    case 0 and 1:
        print("Not possible")
    case (1|2) and y:
        print(f"x is 1 or 2 and also matches y: {y}")

この例では`and`演算子を用いて、複数の条件を一度に評価しています。

or演算子

match x:
    case 0 or 1:
        print("x is zero or one")
    case 2:
        print("x is two")

応用例

応用例1: ネストしたデータ構造

point = (2, 3)
match point:
    case (0, 0):
        print("Origin")
    case (0, y):
        print(f"On the y-axis at {y=}")
    case (x, 0):
        print(f"On the x-axis at {x=}")
    case (x, y):
        print(f"Arbitrary point at {x=}, {y=}")

この応用例では、タプル`point`の各要素に対してパターンマッチングを行います。

応用例2: 辞書のキーと値

data = {"key": "value"}
match data:
    case {"key": str() as value}:
        print(f"Found a string value: {value}")

この応用例では、辞書のキーと値にパターンマッチングを行います。

応用例3: クラスの属性

class Point:
    def __init__(self, x, y):
        self.x = x
        self.y = y

p = Point(1, 2)

match p:
    case Point(0, 0):
        print("Origin")
    case Point(x, y):
        print(f"Arbitrary point at {x=}, {y=}")

この例では、クラスの属性に対してパターンマッチングを行っています。

まとめ

Pythonのパターンマッチングは、非常に柔軟で強力な機能です。特に演算子と組み合わせることで、複雑な条件でも簡潔にコードを書くことができます。この記事を通じて、基本から応用までのテクニックが理解できたら、是非とも実際のコードで活用してみてください。

コメント

コメントする

目次