or1ko's diary

日々を書きます

アスタリスクによるシーケンスの展開

2次元配列を行列に見立て転置するときに

>>> m = ((1,2,3),(4,5,6),(7,8,9))
>>> zip(*m)
[(1, 4, 7), (2, 5, 8), (3, 6, 9)]

上記のようにやります。
これを初めて見たときは、
アスタリスクはシーケンスの前方に置く単項演算子のようなものだと思っていました。

なので、あるとき

print *m

と書いてみました。実行してみたところ動かず、どうもなにかの演算子ではないらしいと、ずっと気になってました。

それで今日、たまたま思い出したので、調べてみたところ、関数呼び出しの引数に与える場合にのみに書ける表現でした。
ちなみにアスタリスク2つだと辞書を展開してくれるようです。

ふと気づいてみれば、関数の定義の引数に書けるアスタリスクの動作とほとんど一緒ですね。