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
