ITやAIに関するちょっとしたメモ

AIやIoTをはじめITに関して記録しておきたいことをメモ的に書いていきます。

【一気通貫で理解するPythonの基礎・基本】配列を扱うリスト形式について

リスト形式はプログラム言語のPythonにおいてデータを配列として扱う形式です。Pythonを学ぶ上で重要な基礎知識のひとつとなります。ただ、初学者にとって多少つまずきやすいところもありますので、arange()やmatplotlibを組み合わせた簡単な利用例とともに、ポイントをまとめておきます。目次を見て、自分に必要なところだけ読んでいただいても構いません(実行するときは基本的に先頭からやってください)。実行環境はPython3です。

f:id:ColdSnap:20191110171625p:plain

リストの作成

リストを作成するには、以下のように変数を[]の中に並べます。

data1 = ["a","b","c","d","e"]
print(data1)
['a', 'b', 'c', 'd', 'e']

要素の追加

リストへの値の追加は、append()というメソッドを利用できます。

data1.append("f")
print(data1)
['a', 'b', 'c', 'd', 'e', 'f']

要素の表示

リストの中の何番目の要素なのか数字で指定して、その要素を表示することが可能です。ただし、このような要素の指定は1からではなく0から始まることに注意してください。つまり、一つ目の要素はリスト名[0]で、二つ目の要素はリスト名[1]で指定します。

print(data1[0])
a
print(data1[4])
e

範囲で指定して表示させることもできます。

print(data1[0:2])
['a', 'b']

数値のリスト

数値データもリストにできます。

data2 = [1,2,3,4,5]
print(data2)
[1, 2, 3, 4, 5]

自動採番でリストを作る

リストと組み合わせてよく使うものにrange()があります。rangre()を使うと、たとえば、1から10までの数字を自動生成してリストが作れます。したがって、前述したようないちいち値を並べて代入する必要がなくなります。以下のように使います。

data3 = range(10)

ただし、この配列名をそのままprint()文で指定しても、以下のように出力されて要素は直接表示されません。これはPythonの仕様です。

print(data3)
range(0, 10)

よって、range()で作成した要素を取り出すには、以下のように番号で要素を直接指定するか、forでループを回して取り出す必要があります。

print(data3[7])
7
for i in data3:
  print(i)
0
1
2
3
4
5
6
7
8
9

空のリストを作る

最初から値を入れるのではなく、とりあえず何も入っていない空のリストを作っておくこともできます。これは、要素を後でそのリストに追加していくような用途において便利です。以下のように宣言します。どういうときにこの機能が役に立つのかは後で具体例を示します。

data4 = []
print(data4)
[]

リストに入れたrange()の数値からグラフを描いてみる

数値をリストに入れて扱うと、それをグラフで可視化する用途に使えます。matplotlibを使って、range()で生成したリストからグラフを描くには、以下のようにできます。
ちなみに、matplotlibは軸やラベルやグリッドなど凝ればいくらでもコードが増えて、検索でヒットするサンプルもそのようなものが多くて面倒という印象があるかもしれません。しかし、実はとりあえず可視化してみるということだけに限るなら、たったこれだけのコード量でも書けてしまうのです。

from matplotlib import pyplot as plt
x = range(100)
plt.plot(x, x)

f:id:ColdSnap:20191110170426p:plain
matplotlibはこのようにデータの可視化に有益なツールなので、もし、お使いの環境でmatplotlibがインストールされていない場合は、それぞれの環境に応じてpip install やconda install でインストールして試してみてください。

range()による数値生成では、大きな数から小さい数に向かって数値を生成することも可能です。

from matplotlib import pyplot as plt
x = range(100, 0, -1)
y = range(0, 100, 1)
plt.plot(x, y)

f:id:ColdSnap:20191110170357p:plain

空のリストを作成して、計算結果を逐次追加し、グラフで可視化してみる

さらに簡単な応用として、べき乗計算を行ってグラフを描いてみます。変数yについては、最初にy = []で初期化して空の状態のリストを作り、forループの中でappend()を使って計算結果をそこに追加しています。

from matplotlib import pyplot as plt
x = range(100)
y = []
for i in x:
  y.append(i**2)

plt.plot(x, y)

f:id:ColdSnap:20191110170620p:plain

リストの要素数の指定

そのリストに要素がいくつ入っているか、格納されている要素数を調べるにはlen()を使います。

data5 = ["apple","orange","banana","grape","kiwi"]
len(data5)
5

リスト同士の連結

リスト同士を「 + 」で連結することも可能です。これは直感的に理解しやすいですね。

data5 = ["apple","orange","banana","grape","kiwi"]
data6 = ["pineapple", "strawberry", "cherry"]
data7 = data5 + data6
print(data7)
['apple', 'orange', 'banana', 'grape', 'kiwi', 'pineapple', 'strawberry', 'cherry']

リストの中の要素をソートする

リストの中の要素をソートして並べかえて出力することができます。

print(sorted(data7))
['apple', 'banana', 'cherry', 'grape', 'kiwi', 'orange', 'pineapple', 'strawberry']

デフォルトは昇順ですが、以下のように指定することで、降順に並べ替えて出力することもできます。こちらは、オプションとして「reverse=True」を加えることがポイントです。

print(sorted(data7, reverse=True))
['strawberry', 'pineapple', 'orange', 'kiwi', 'grape', 'cherry', 'banana', 'apple']

リストの中の要素を削除する

リストの中で指定した範囲の要素を削除することも可能です。「del」はdelete(削除)ですね。

print(data7)
['apple', 'orange', 'banana', 'grape', 'kiwi', 'pineapple', 'strawberry', 'cherry']

del data7[2:5]
print(data7)
['apple', 'orange', 'pineapple', 'strawberry', 'cherry']

最後に

リストはPythonで使う基本的な配列機能なので、初心者のときに覚える必須の知識のひとつになります。用途は広く、一度覚えると、とても便利です。他にもいくつも機能はありますが、まずはここで紹介したようなものを使いこなせるようにするとよいでしょう。次は、辞書型について、一気に説明します。
coldsnap.hatenablog.jp