見出し画像

Python基本の“キ”【vol3】 リスト(配列)とその操作

皆さん、コツコツ頑張ってますか?管理人のmajisonです。
今回はPython基本の“キ” vol3という事で、リスト(他のプログラム言語で言うところの配列)についてです。
今回も短い時間で読めるようにサクッといきたいと思います。

1.一次元リスト

リスト(配列)とは通常の変数が1つの値しか格納することができないところを部屋番号に相当する「インデックス」を添えて表す事で複数の情報を扱えるようにした変数のことです。
特に帯状に一方向にだけ並べたリストを一次元リストといいます。
リストの定義は次の事例のように変数に格納する値を“[ ]“で囲い、複数の値をカンマで区切る事で定義されます。(厳密には“[ ]“で括って代入するとリスト形式で代入されるだけで、リスト型の変数を定義している訳ではありません)

# リストの定義
a = [1,2,3]

# 値を指定しないと空のリストが定義される。
b = []

# 数値と文字列を混ぜてもOK
c = [1,’abc’,2]

リストの値を参照する場合は2通りの方法があり、インデックスを指定せずに変数名だけを指定すると配列全体の値が取り出され、インデックスを指定するとインデックスに該当する値だけが参照されます。インデックスの指定は値の代入と同様に“[ ]“を使い、変数名+“[ ]“で表します。
インデックスは1からでなく、0から始まるところだけ要注意です。

a = [1,2,3]

print(a)
print(a[1])

>実行結果
[1, 2, 3]     #print(a)の出力結果
2              #print(a[1])の出力結果 

上記の例から2が格納されているインデックス[1]の要素に4に代入してみます。

a = [1,2,3]
a[1] = 4

print(a)
print(a[1])

>実行結果
[1, 4, 3]
4

基本的な使い方はこんな感じです。

2.リストの操作

リストの基本的な使い方が分かったところで続いてリストの操作について見て行きます。

2.1.リスト全体の代入

先程インデックスを指定せずに変数名のみを指定することでリスト全体の値を参照できると説明しました。これと同じ要領で代入元・先に変数名のみを記述する事でリスト全体の代入が可能です。

a = [1,2,3]

print(a)

b = a

print(b)

>実行結果

[1, 2, 3]       #リストaの出力結果
[1, 2, 3]       #リストbの出力結果

2.2.リスト同士の結合

リスト同士をインデックスを指定しないまま足し算するとリストが結合されます。
これは便利!

a = [1,2,3]
b = [4,5,6]

c = a + b

print(c)

>実行結果
[1, 2, 3, 4, 5, 6]

この指定でリストの結合は可能ですが、仮に双方のリストの値を合わせていたとしてもリストの切り取りはできないのでその点は注意です。

2.3.要素の追加

リストに新しい要素を足す場合は“append”というメソッドを使います。
下記の例では3つしか要素がないリストaに4つ目の新しい要素“10”を足します。

a = [1,2,3]

print(a)

a.append(10)

print(a)

>実行結果
[1, 2, 3]         #要素追加前
[1, 2, 3, 10]    #要素追加後

2.4.要素の削除

逆に要素を削除する時はremoveメソッドを使います。削除された要素はインデックスが前詰めされます。
「指定したインデックス」ではなく「指定した値の要素」が削除される点に注目して下さい。

a = [1,2,3]

print(a)
print(a[1])

a.remove(2)

print(a)
print(a[1])

>実行結果

[1, 2, 3]       #要素削除前
2                 #要素削除前のインデックス1の要素
[1, 3]           #要素削除後
3                 #要素削除後のインデックス1の要素  

removeメソッドに2を指定したため、合致したインデックス1の要素が削除され、その次にあった3が前詰めされています。同じインデックス1を指定してますが出力されている値が3に変わってますね。

2.5.リストの長さ(要素の数)を取得する。

配列に要素がいくつあるかを知るにはlen関数を使います。

a = [1,2,3]
print(len(a))

>実行結果
3

2.6.リストの分割

リストのインデックスに“:“区切りで開始と終了のインデックスを指定するとその範囲の要素を取り出すことができます。コロナの前、あるいは後ろを省略すると最初(最後)まで要素が取り出されます。

a = ['a','b','c','d','e','f']

print(a[2:4])  #①
print(a[2:])   #②
print(a[:4]).  #③

>実行結果
['c', 'd']               #①の出力結果
['c', 'd', 'e', 'f']       #②の出力結果
['a', 'b', 'c', 'd']      #③の出力結果

出力結果を見ていただくと分かりますが、終了側のインデックスは指定したインデックスの1つ前までしか抽出されない為、この点は注意が必要です。
実際使う時には「一つ足りてなかった!」ってバグができちゃうんだろうなぁ…。


3.まとめ

今回のまとめです。

  • 値を[ ]で括るとリストとして値が変数に格納される。

  • リストの変数名を指定して値を参照するとリストの値全体が取得される。

  • リストの変数名+[インデックス]の形で値を参照すると指定したインデックスの値が取得される。

  • リストをインデックスを指定せずに別の変数に代入するとリスト全体の値を代入可。

  • 別の変数にリスト同士を足し合わせるとリストを結合できる。

  • リストに要素を足す時はappendを使う。

  • リストの要素の削除はremoveを使う。

  • リストの要素の数を取得するにはlen関数を使う。

  • リストの分割をする際は変数名[開始インデックス:終了インデックス]で指定する。

今回はこれまでよりも内容が多くなりましたね(汗)
読んでいただいた方はお疲れ様でした。
今回はこれまで!

いいなと思ったら応援しよう!