Python基本の“キ”【vol4】 リストの操作とタプル
皆さん、コツコツ頑張ってますか?管理人のmajisonです。
今回はPython基本の“キ” vol4という事で、前回説明しきれていなかったリストの操作とタプルについて説明したいと思います。タイトルには含まれませんが二次元配列についても触れたいと思います。
今回も短い時間でサクッといきましょう。
1.リストの操作
1.1. リストのソート
pythonにはsortメソッドと言うそれはそれは便利なメソッドが用意されています。
リストの中をソートしようとするとVBAだとソート用のプログラムを組まないといけませんが、pythonなら一発です!
ただしリスト内の要素に数値と文字列を混ぜて格納した場合エラーとなってメソッドが動かないのでその点は注意です。
a = [1,10,3,5]
a.sort()
print(a)
a = [1,10,3,’a’]
a.sort()
print(a) #この場合は数字と文字列を混ぜているのでエラー
さらにメソッドの引数にreverseと言う引数を指定することができます。これにTrue値を渡すと通常なら正順に並ぶところが逆順にソートされます。
a = [1,10,3,5]
a.sort(reverse=True)
print(a)
1.2.指定した要素の有無チェック
指定した要素がリストに含まれるかどうかをin演算子を使うことで一発で確認可能です。判定結果はBool型で返されます。
a = [1,10,3,5]
print(10 in a)
例によって数値と文字列は別物として扱われるので気をつけましょう。
下記の例では文字型の‘10’を検索していますが、リストには数字の10しかないのでFalseが返ってきます。
a = [1,10,3,5]
print('10' in a)
1.3. 指定した値がいくつあるかを調べる
続いてリストの中に指定した値がいくつ含まれるかを調べる方法です。
これもcountメソッドを使う事で一発で求めることができます。Pythonのリスト周りは至れり尽くせりな感じがしますね。(他の言語はあんまり触った事ないから知らんけど)
次の事例ではリストaに含まれる5つの要素から3の数を調べに行っています。
もちろん数値ではなくて文字列でもOK。
a = [1,10,3,5,3]
print(a.count(3))
1.4. 指定した値のINDEXを取得する
最後はリストに含まれる値のうち、指定した値のIインデックス(添え字)を取得します。
INDEXを使う事でこれまた一発です。
下記の事例の様に同じ値が複数含まれる場合はインデックスの数値の小さい方が取得されます。
a = [1,10,3,5,3]
print(a.index(10))
インデックスは0から始まるので10が格納された2つ目の要素のインデックス1が返されています。
2.二次元配列(二次元リスト)
リスト周りで触れていなかった話として二次元配列(二次元リスト)の話がありました。通常のリストが一つの紐の様に連なった箱に任意の数の要素を持てるのに対しExcelの表のように縦と横の2方向に箱を設けて値を格納できるのが特徴です。
どう値を格納すると二次元リストになるかと言うと、めちゃくちゃ力技で即ち「リストの要素にリスト型で値を格納する」です。言葉で説明するより見てもらった方が分かりやすいと思います。
a = [[1,2,3],\
[4,5,6],\
[7,8,9]]
print(a) #①
print(a[0][2]) #②
リスト型の変数aに
インデックス:0 → [1,2,3]
インデックス:1 → [4,5,6]
インデックス:2 → [7,8,9]
をそれぞれ格納しています。
途中にバックスラッシュ“\” を書いていますが、これは「1文が長くなるので改行して表記しますよ」と言う意味です。次に書く文は前の行の続きになりますが、先頭にはインデントを付けておく必要があります。
①の実行結果では上記で説明した値がそれぞれ出力されているのが分かりますね。
②ではインデックス0の値 [1,2,3] から2つ目のインデックス2の値である3が取れ出されています。
この様に二次元リストでは「変数名[x][y]」の形で値を指定します。
3.タプル
タプルとは一言で言うと「更新できない“リスト“」です。
ただ、ここで言う「更新できない」とは一度格納した値を上書きできない、と言うだけで要素の追加はできます。
タプルの定義や使い方は通常のリストとほぼ同じですが、リスト型として値を設定する際に角カッコ[ ]を使っているのに対しタプルは丸カッコ( )を使います。
一度値を設定したタプルから値を取り出す際はリストと同様に角カッコでインデックスを指定します。
う〜ん、どこで使うんだろう。。。
a = ('a','b','c')
print(a)
print(a[1])
タプルを更新しようとするとエラーになります。
a = ('a','b','c')
a[1] = 'd' #これはエラー。
これは既存の値を更新はしていない為OK。
a = ('a','b','c')
a += ('d','e')
print(a)
3.まとめ
今回のまとめです。
sort()メソッドを使うとリストをソートできる。
a.sort(reverse=True)とすることで逆順にもソートできる。
「検索キー in リスト名」とする事で検索キーがリストの中に含まれるか検索できる。
INDEXメソッドを使うと指定した値が格納された要素のインデックスが取得できる。
リスト型の値にリスト型の値を格納することで二次元リスト(二次元配列)にできる。
[ ] の代わりに( )でリストを定義するとタプルとして値が格納される。
タプルは要素の追加はできるが、要素の書き換えはできない。
と言う訳で今回はここまで!