リスト
前回、matplotlibでレーダーチャートを作成する方法を解説しました。
今回はリストのアンパックに関して解説していきます。
Pythonでプログラムを書いていると非常にお世話になるリスト。
最近、あるプログラムを書いていた時にリストを要求する関数(なんだったか忘れましたが。。。)があり、ちょっとつまづきました。
その時に覚えたのが今回の「アスタリスク(*)を使ったリストのアンパック」。
簡単にいうとリスト名の前にアスタリスクをつけるとリストではなく、その全要素を示すことになるのです。
なかなか言葉では分かりづらいのでとりあえず試してみましょう。
アスタリスクを使ったリストのアンパック
とりあえず簡単な例としてこんなプログラムを書いてみました。
values = ['a', 'b', 'c']
print(values)
print(*values)
実行結果
['a', 'b', 'c']
a b c
まず「’a’, ‘b’, ‘c’」が入ったリストvalueを準備しました。
それをprint関数で表示していますが、一つはアスタリスクなし、もう一つはアスタリスクありです。
アスタリスクなしの場合はリストとして認識され、「[‘a’, ‘b’, ‘c’]」と表示されました。
アスタリスクありの場合はリストの中の要素「a b c」が表示されています。
これがアスタリスクを使ったリストのアンパックです。
アンパックが便利な例1:range関数
アンパックが便利な例の1つ目として「range関数」を使った際のリストの確認があります。
values = range(5)
print(values)
print(*values)
実行結果
range(0, 5)
0 1 2 3 4
通常、range関数を使って数値のリストを作成し、print関数で表示しようとしても上記の例のように「range(0, 5)」と表示されるだけで、その要素を全て見ることができません。
しかしアスタリスクをつけてアンパックすることで「0 1 2 3 4」というように要素を確認することができます。
アンパックが便利な例2:2つ以上のリストを同時に渡す
アンパックが便利な例の2つ目として「2つ以上のリストを同時に渡す」ということがあります。
例えばmatplotlibでグラフを表示する場合、ほとんどの場合はX値のリストとY値のリストを渡します。
ただ処理の途中でX値のリストとY値のリストを2次元リストという形で一つにまとめた場合、「plt.plot(x, y)」で再度X値のリスト、Y値のリストの戻してから関数に渡す必要があります。
しかしアスタリスクを使ったアンパックをすることで、まとめたリストのまま渡すことができるのです。
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y = [10, 20, 30, 40, 50]
values = [x, y]
fig = plt.figure()
plt.clf()
plt.plot(*values)
plt.show()
実行結果
上記のように毎回同じリストを要求する場合はいいのですが、関数やプログラムによっては可読性が落ちる気がしますので、あまり乱用しない方がいい気もします。
次回はモジュールを自作する方法を解説していきます。
ではでは今回はこんな感じで。
コメント