
こんにちは!
機械学習講師の篠原です!

篠原
18 歳から「苦手に寄り添うことを忘れない」をモットーに、集団指導塾や高校の学内予備校で教えていました! この記事も、これから Python を学習する方向けに丁寧に書きましたのでぜひご覧ください!
Python でプログラミングをしていてよく使うのがリスト (list) です。プログラミング学習をしはじめて [] をよく見るようになったという方も多いのではないのでしょうか?
この記事では Python でのリストについて、その使い方やタプル・辞書型との違いを紹介します!
本記事はこんな方にオススメです
目次
Python に触れていて一番良く使うのがリストです。
目印は [ ] の形で、この中にデータを入れて扱います。
numbers1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] # number1 の出力 numbers1
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
こちらのコードで、numbers1 という変数に、1~10 の数が入りました。
インデックス番号について
私たちが数を数えるとき、当たり前ですが 1, 2, 3... と数えます。
しかし、コンピュータに数えてもらうときは 0, 1, 2... と数えます。
例えば [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] の 4 という数を選びたいとき、普段の感覚で「 4 個目とって〜」とプログラミングしてしまうと、リストの中では 「 0, 1, 2, 3, 4 個目 ← ここですね!」と受け取り、5 が出力されてしまいます。
この 0, 1, 2, ... という数のことを インデックス番号 と呼びます。
ではここで Python で一番使われるリストのいろいろな使用例をご紹介します。
Python を使うのに重要なものとなるので、こんなことができるんだと憶えておくといいでしょう。
先ほどご紹介した numbers1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] を使って解説します!
例えばリストから 3 番目の要素を取得したい場合は以下のように書きます。
numbers1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] print(numbers1[2])
3
こちらは先ほどご紹介した「インデックス番号」ですね。
3 番目の要素がほしい時は 0 番目、1 番目、 2 番目と数えるのでこのように書きます。
例えばリストの間の 2 番目から 5 番目の要素がほしい時は以下のように書きます。
print(numbers1[1:4])
[2, 3, 4, 5]
リストの最後に要素を追加したい時は append を使います。
numbers1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] # リストの末尾に追加するには append() を使う numbers1.append(11) print(numbers1)
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
リストの途中に要素を追加したい時は insert を使います。
numbers1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] # 第一引数に追加したい場所、第2引数に追加したい要素を記述 numbers1.insert(5, 100) print(numbers1)
[1, 2, 3, 4, 5, 100, 6, 7, 8, 9, 10]
append と同じように削除したいインデックスを指定します。
書き方が少し違うのに注意です。
numbers1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] # 3 番目を削除したい時 del numbers1[2] print(numbers1)
[1, 2, 3, 4, 5, 100, 6, 7, 8, 9, 10]
リストの最後の要素を削除したい時は del に -1 を入れます。
numbers1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] del numbers1[-1] print(numbers1)
[1, 2, 3, 4, 5, 6, 7, 8, 9]
リストから削除したい要素を直接指定して削除する場合は remove を使います。
numbers だと少し複雑になるので今回の例では文字列のリストで解説します。
strings = ['あ', 'い', 'う', 'え', 'お'] strings.remove('う') print(strings)
['あ', 'い', 'え', 'お']
リストの中から条件に一致する要素がリストの中で何番目にあるかを取得できます。
こちらはコードを見たほうがわかりやすいと思います。
strings = ['あ', 'い', 'う', 'え', 'お'] strings.index('う')
2
この場合、 う があるインデックス番号が取得できます。
あ のインデックス番号が 0 で、い が 1, う が 2 ですね!
リストの中に要素がいくつあるか数えるには len を使います。
numbers1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] len(numbers1)
10
リストの最後に別のイテラブル(リスト、タプル、辞書など)の全ての要素を追加したい時は extend を使います。
numbers2 = [1, 2, 3, 4, 5] more_numbers = [6, 7, 8, 9, 10] # リストの末尾に複数要素を追加するには extend() を使う numbers2.extend(more_numbers) print(numbers2)
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
リストの特定の位置に要素を挿入したい時は insert を使います。
numbers3 = [1, 2, 4, 5] # リストの指定位置に挿入するには insert() を使う numbers3.insert(2, 3) # 3番目の位置(インデックスは2)に '3' を挿入する print(numbers3)
[1, 2, 3, 4, 5]
リストから指定位置の要素を取り出し、その要素を削除したい時は pop を使います。
numbers4 = [1, 2, 3, 4, 5] # リストから指定位置の要素を取り出すには pop() を使う popped_number = numbers4.pop(2) # 3番目の位置(インデックスは2)の要素を取り出す print(popped_number) print(numbers4)
3 [1, 2, 4, 5]
リストから全ての要素を削除したい時は clear を使います。
numbers5 = [1, 2, 3, 4, 5] # リストから全ての要素を削除するには clear() を使う numbers5.clear() print(numbers5)
[]
リストに含まれる特定の要素の数を数えるには count を使います。
numbers6 = [1, 2, 2, 3, 3, 3, 4, 4, 4, 4] # リストに含まれる要素の数を数えるには count() を使う count_3 = numbers6.count(3) print(count_3)
3
リストの要素をソートしたい時は sort を使います。
numbers7 = [5, 2, 1, 4, 3] # リストの要素をソートするには sort() を使う numbers7.sort() print(numbers7)
[1, 2, 3, 4, 5]
リストの要素を逆順にしたい時は reverse を使います。
numbers8 = [1, 2, 3, 4, 5] # リストの要素を逆順にするには reverse() を使う numbers8.reverse() print(numbers8)
[5, 4, 3, 2, 1]
リストのコピーを作成したい時は copy を使います。
numbers9 = [1, 2, 3, 4, 5] # リストのコピーを作成するには copy() を使う numbers9_copy = numbers9.copy() print(numbers9_copy)
[1, 2, 3, 4, 5]
リストを扱っていると度々遭遇するのが、タプルです。個性的な名称ですよね!
目印は ( ) の形。使い方は先ほどのリストと同じです!
numbers2 = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10) # number2 の出力 numbers2
(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
numbers2 という変数に、1~10 の数が入りました。
※インデックス番号はリストと同じく、0, 1, 2・・・ と同じ数え方をします。
初学者
え?リストとタプルの違いって何!?
と感じられた方、さすがです。
実は括弧書きの形以外は見た目では変わらないのです。

篠原
しかし、リストのnumbers1 とタプルの numbers2 には違いがあります。
試しに、それぞれのデータの 3 のところを 100 に変更してみようと思います!
numbers1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] # number1 の 3 つ目の要素を 100 に置き換える numbers1[2] = 100
これで、出力をしてみると・・・
print(numbers1)
[1, 2, 100, 4, 5, 6, 7, 8, 9, 10]
期待通り、3 を 100にしてくれました!
numbers2 = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10) # number2 の 3 つ目の要素を 100 に置き換える numbers2[2] = 100
print(numbers2)
これで、出力を試してみると・・・
TypeError Traceback (most recent call last) <ipython-input-8-c30dc9a29747> in <module> ----> 1 numbers2[2] = 100 TypeError: 'tuple' object does not support item assignment
代入するところでエラーメッセージが発生してしまいました。
つまり、タプルに入れたデータは手を加えられないということがわかります。
これがタプルの性質の一つであり、リストとタプルの違いなのです。
例えば、研究データや実験データなど 1 つのデータを共有して使用する場合を想像してください。元々のデータがうっかりミスで変わる恐れがある。 こんな場合は、元々のデータに代入などできない設定の方がいいですよね?
こういう時こそ、タプルの方が好まれます。

篠原
ここまでが、リストとタプルの大きな違いです!
では次は、{} という括弧書きを見てみましょう。
これは辞書型といい、キーと値のペアでデータを管理するという特徴があります。
ここまでの復習
リストやタプルはインデックス番号(0, 1, 2, 3, 4...)で番号を割り振り、何番目と指定してデータを使用していました。
先ほどの
numbers1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
numbers1[2] = 100
というのは、 numbers1 の インデックス番号 2 の数を 100 にして!という命令なので、インデックス番号 2 (0, 1, 2) = 3 番目の数が 100 に更新され、
[1, 2, 100, 4, 5, 6, 7, 8, 9, 10]
と出力されました。
辞書型もインデックス番号で管理できるのですが、例えば生徒の名簿など 0, 1, 2, 3, 4... といった数字ではなく、名前等で管理したいという場合もあると思います。
そこで、インデックス番号の役割を、もっとわかりやすい名称で補おう!ということで辞書型が使用されることもあります。
目印は { キー : 値 } の形で、この中にデータを入れて扱います。
profile = {"name": "Shinohara", "Phone": "000-1111-2223" } # 出力する print(profile["name"])
上記コードで、 profile に中にある name に格納されたものを教えよ!という命令になるので、
Shinohara
と出力されます。
これを活用し、例えばクラス名簿と点数を扱うときも下記のように実行できます。
Score = {"Tarou": 49 , "Kana": 67 , "Hiroko": 29 } # 出力する print(score["Kana"])
print(numbers1[1:4])

篠原
リストの保管を工夫したバージョンという認識でいてください。リスト同様代入等が可能です。
今回は リスト・タプル・辞書型の違い についてまとめました。
まとめ
リスト → [ ] 一番良く使用する括弧書き
タプル → ( ) 手を加えられない版のリスト
辞書型 → { } リストの保管を工夫したもの
リストがベースとなり、そこからタプル・辞書型に派生しているイメージです。
データの保管の仕方は、今後の Python 学習でつまづきやすいポイントの 1 つですので、ぜひ意識していきましょう!
また、Python に苦手意識がある方は、この記事も併せてご覧ください。知識がより整理されると思います!

篠原
これからも初学者目線でつまづくポイントをブログにて解説していきますので、他の記事もぜひご覧ください! 最後まで読んでいただきありがとうございました!
.jpg&w=3840&q=75)
キカガクの長期コースはプログラミング経験ゼロの初学者が最先端技術を使いこなすAIエンジニアになるためのサポート体制が整っています!
実際に未経験からの転職・キャリアアップに続々と成功中です
まずは無料説明会で、キカガクのサポート体制を確認しにきてください!
説明会ではこんなことをお話します!
.png&w=3840&q=75)
AI・機械学習を学び始めるならまずはここから!経産省の Web サイトでも紹介されているわかりやすいと評判の Python&機械学習入門コースが無料で受けられます!
さらにステップアップした脱ブラックボックスコースや、IT パスポートをはじめとした資格取得を目指すコースもなんと無料です!
SHARE
AI/データサイエンス学びはじめの方におすすめの記事
コース一覧
注目記事
新着記事
目次