logo

Pythonのアンパック演算子 📂プログラミング

Pythonのアンパック演算子

説明

Pythonではアンパッキングunpackingとは、オブジェクト内の要素を個別に分離することを指す。オブジェクトの前に * を付けて使用する。例を一つ挙げると、0から4までと8から13までのインデックスでforループを実行したいとする。for i in (range(5) + range(8, 14)) のように書きたくても、2つの range 間の二項演算は定義されていない。この場合、アンパッキング演算子 * を使って下のように各 range の要素を一つずつ展開して新しいリストに入れればよい。

Juliaではスプラット演算子と呼び、末尾に ... をつけて使う。

>>> for i in [*range(5), *range(8, 14)]:
...     print(i)
...
0
1
2
3
4
8
9
10
11
12
13

もちろん他の方法でも実装できる。直接例外処理をすることも、多重 for 文を使うことも可能だ。しかしアンパッキング演算子を使えば、range が2つの時点でコードは簡潔になり可読性が向上し、3つ以上なら比較するまでもないほどだ。

# 예외처리
for i in range(14):
    if i < 5 or i >= 8:
        print(i)

# 다중 for문
for r in (range(5), range(8, 14)):
    for i in range(len(r)):
        print(r[i])

環境

  • OS: Windows11
  • Python: 3.10.11