どうも!リョクちゃです。
今回は、シーケンス型のひとつである”リスト”について触れていきます。
Pythonにおけるリストの使い方や使用例を主にまとめていきます。
ちなみに前回は、制御構文(while文)についてまとめていました。
目次
リストって何??
リストとは、Pythonではシーケンス型の一つとして扱われます。
また、ほかの言語においては、”配列”ともいわれています。
下に特徴をまとめると、
- 複数の値をまとめるのに使われます。
- リスト内の要素が変更可能な変数の型となります。
変更可能な型を”ミュータブル”な型
変更不可な型を”イミュータブル”な型
とそれぞれ呼ばれています。 - カンマ区切りの要素の並びを角かっこ”[,]”で囲んで表記します。
リストの構造を図にしてみると下のようになります。(おそらく)
1 2 |
# リストの作成 X = ['Apple', 123, 'Bacon', 'Egg'] |
ちなみにリスト内では、数値や文字列、リスト等を混在させることも可能です。
リスト内の要素が変更可能な変数の型
リストはPythonにおいては、ミュータブルな型として扱われると記述しました。
これがなんなのかというと、
例えば、リスト変数Xに格納された0番目の値をほかの値に変更したい場合
このような変更を行いたい場合、ミュータブルな型では変更することが可能です。
リストの値を抽出
リスト中のある要素を抽出したい場合、
下のような記法で抽出をすることが可能です。
これをもとにコードで書くと、
1 2 3 4 5 6 |
# リスト内の抽出 X = ['Apple', 123, 'Bacon', 'Egg'] print(X[0]) # 出力 # Apple |
イメージだと、こんな感じになりますね。
※ インデックス外の番号を指定するとエラーになってしまうので注意が必要です。
例えば、X[4]をしてしまうと、エラーが発生します。
1 2 3 4 5 6 7 8 9 |
# リスト内の抽出 X = ['Apple', 123, 'Bacon', 'Egg'] print(X[4]) # 出力 # 例外が発生しました: IndexError #list index out of range # File "Pythonファイル名", <エラー発生の行番号>, in <module> # print(X[4]) |
リストに値を追加 : .append
リストに値を追加したい場合、
と表記することで追加ができます。
例えば、
これを下のようにすることで、
リストに格納することが可能です。
コードで書くと、
1 2 3 4 5 6 7 |
# リストに値を追加 X = ['Apple', 123, 'Bacon', 'Egg'] X.append('Bike') print(X) # 出力 # ['Apple', 123, 'Bacon', 'Egg', 'Bike'] |
リストの任意の箇所に値を格納 : .insert
リストの任意の箇所に値を追加したい場合は、
と表記することで出来ます。
例えば、
これを下のようにすることで、
リストの任意の箇所に値を追加することができます。
※ >insertしたらインデックスが変わるので注意
コードで書くと、
1 2 3 4 5 6 7 |
# リストの任意の箇所に値を追加 X = ['Apple', 123, 'Bacon', 'Egg'] X.insert(1, 'Bike') print(X) # 出力 # ['Apple', 'Bike', 123, 'Bacon', 'Egg'] |
空きのリストの作り方
格納する値も決まってないけど、リスト変数の宣言をしたいときは、
下のように書きます。
1 2 3 |
# 空リストの宣言 X = [] # 角かっこを記述するだけで可能。 |
例えば、こんな時にリスト変数をあらかじめ宣言していないと、
1 2 3 4 5 6 7 8 9 10 11 |
for i in range(10): x = i + 1 if x % 2 == 0: lstX.append(x) print(lstX) # 例外が発生しました: NameError # name 'lstX' is not defined # File "Pythonファイル名", エラー発生行番号, in <module> # lstX.append(x) |
これは、変数xが偶数であれば、リスト変数lstXに追加するといった処理になります。
しかし、実行してみるとエラーになってしまいます。
→ lstXは定義されていませんよ。というエラーで、
定義されていない未知の変数がどういった変数なのかもわからないから、
エラーが発生しています。
これを回避する場合に、あらかじめ空のリストを宣言してやる必要があります。
1 2 3 4 5 6 7 8 9 10 |
lstX = [] for i in range(10): x = i + 1 if x % 2 == 0: lstX.append(x) print(lstX) # 出力 # [2, 4, 6, 8, 10] |
for文の前に空リストとして変数lstXを宣言してあげることで、
エラーは発生しなくなりました。
まとめ
表記 | 記述例 | 内容 |
---|---|---|
リスト変数.append(追加したい値) | X.append(‘Bike’) | リストの末尾に新規値を追加 |
リスト変数.insert(挿入したいインデックス、追加したい値) | X.Insert(1,’Bike’) | リストの指定したインデックスに値を追加 |
リスト変数[インデックス] | X[0] | リストの0番目の値を抽出 |
リスト変数[インデックス]=置き換えたい値 | X[0] = ‘Bike’ | リストの0番目の値を’Bike’に置き換える |
リスト変数=[] | X = [] | 空のリストの作成(初期化の宣言など) |
練習問題
① リスト変数[9,3,20,-7]が与えられます。
リスト内の値の総和を求め、出力して下さい。
② 1~10までをリストに格納した後、それぞれの値を2乗した値を出力して下さい。
回答
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
① lstX = [9, 3, 20, -7] print(sum(lstX)) > 25 ② lstX = [] for i in range(10): x = i + 1 lstX.append(x) for j in lstX: print(j ** 2) > 1 > 4 > 9 > 16 > 25 > 36 > 49 > 64 > 81 > 100 |
おわりに
リストについて簡単な使い方を例を交えて触れていきました。
リストは、Pythonでは非常によく使われるので
覚えておいてもらえたらなと思います。
筆者もよくリストは使っています。
例えば、画像解析や機械学習、深層学習においてはリストは必須になるので、
覚えておいて損はありません!
リストについては、細かくピックアップして記事にしようかと思います。
最後までお読みいただきありがとうございます。