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

18 歳から「苦手に寄り添うことを忘れない」をモットーに、集団指導塾や高校の学内予備校で教えていました!
この記事も、これから Python を学習する方向けに丁寧に書きましたのでぜひご覧ください!
Python でプログラミングをしていてよく使うのがリスト (list) です。プログラミング学習をしはじめて []
をよく見るようになったという方も多いのではないのでしょうか?
この記事では Python でのリストについて、その使い方やタプル・辞書型との違いを紹介します!
- Python を学び始めてリストを使えるようになりたい方
- [ ],( ), { } の違いを改めて復習したい方

学習について無料で相談してみませんか?
独学で悩まれている方へ。理想のキャリアをヒアリングし、カウンセラーが最適な学習方法を一緒に考えます。希望者には講義を無料で体感できるセミナーもご案内!
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 で一番使われるリストのいろいろな使用例をご紹介します。
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() 〜リストの末尾に追加〜
リストの最後に要素を追加したい時は 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() 〜リストの○番目に追加〜
リストの途中に要素を追加したい時は 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]
del() 〜リストの○番目の要素を削除〜
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() 〜リストの末尾の要素を削除〜
リストの最後の要素を削除したい時は 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() 〜リストから指定した要素を削除〜
リストから削除したい要素を直接指定して削除する場合は remove
を使います。
numbers だと少し複雑になるので今回の例では文字列のリストで解説します。
strings = ['あ', 'い', 'う', 'え', 'お']
strings.remove('う')
print(strings)
['あ', 'い', 'え', 'お']
index() 〜リストから条件に一致する要素のインデックスを取得する〜
リストの中から条件に一致する要素がリストの中で何番目にあるかを取得できます。
こちらはコードを見たほうがわかりやすいと思います。
strings = ['あ', 'い', 'う', 'え', 'お']
strings.index('う')
2
この場合、 う
があるインデックス番号が取得できます。
あ
のインデックス番号が 0 で、い
が 1, う
が 2 ですね!
len() 〜 リストにある要素の数をカウントする〜
リストの中に要素がいくつあるか数えるには len
を使います。
numbers1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
len(numbers1)
10
extend() 〜リストの末尾に複数要素を追加〜
リストの最後に別のイテラブル(リスト、タプル、辞書など)の全ての要素を追加したい時は 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(i, x) 〜リストの指定位置に挿入〜
リストの特定の位置に要素を挿入したい時は insert を使います。
numbers3 = [1, 2, 4, 5]
# リストの指定位置に挿入するには insert() を使う
numbers3.insert(2, 3) # 3番目の位置(インデックスは2)に '3' を挿入する
print(numbers3)
[1, 2, 3, 4, 5]
pop() 〜リストから指定位置の要素を取り出す〜
リストから指定位置の要素を取り出し、その要素を削除したい時は 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() 〜リストから全ての要素を削除〜
リストから全ての要素を削除したい時は clear を使います。
numbers5 = [1, 2, 3, 4, 5]
# リストから全ての要素を削除するには clear() を使う
numbers5.clear()
print(numbers5)
[]
count(x) 〜リストに含まれる要素xの数を数える〜
リストに含まれる特定の要素の数を数えるには count を使います。
numbers6 = [1, 2, 2, 3, 3, 3, 4, 4, 4, 4]
# リストに含まれる要素の数を数えるには count() を使う
count_3 = numbers6.count(3)
print(count_3)
3
sort() 〜リストの要素をソートする〜
リストの要素をソートしたい時は sort を使います。
numbers7 = [5, 2, 1, 4, 3]
# リストの要素をソートするには sort() を使う
numbers7.sort()
print(numbers7)
[1, 2, 3, 4, 5]
reverse() 〜リストの要素を逆順にする〜
リストの要素を逆順にしたい時は reverse を使います。
numbers8 = [1, 2, 3, 4, 5]
# リストの要素を逆順にするには reverse() を使う
numbers8.reverse()
print(numbers8)
[5, 4, 3, 2, 1]
copy() 〜リストのコピーを作成〜
リストのコピーを作成したい時は 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 に苦手意識がある方は、この記事も併せてご覧ください。知識がより整理されると思います!




これからも初学者目線でつまづくポイントをブログにて解説していきますので、他の記事もぜひご覧ください!
最後まで読んでいただきありがとうございました!
最速で学びたい方:キカガクの長期コースがおすすめ

続々と転職・キャリアアップに成功中!受講生ファーストのサポートが人気のポイントです!
AI・機械学習・データサイエンスといえばキカガク!
非常に需要が高まっている最先端スキルを「今のうちに」習得しませんか?
無料説明会を週 2 開催しています。毎月受講生の定員がございますので確認はお早めに!
- 国も企業も育成に力を入れている先端 IT 人材とは
- キカガクの研修実績
- 長期コースでの学び方、できるようになること
- 料金・給付金について
- 質疑応答
まずは無料で学びたい方: Python&機械学習入門コースがおすすめ

AI・機械学習を学び始めるならまずはここから!経産省の Web サイトでも紹介されているわかりやすいと評判の Python&機械学習入門コースが無料で受けられます!
さらにステップアップした脱ブラックボックスコースや、IT パスポートをはじめとした資格取得を目指すコースもなんと無料です!

学習について無料で相談してみませんか?
独学で悩まれている方へ。理想のキャリアをヒアリングし、カウンセラーが最適な学習方法を一緒に考えます。希望者には講義を無料で体感できるセミナーもご案内!