複数の値を格納する型
複数の値を格納する型として、リストとタプル、辞書を紹介します。他にもありますが、まずはこの3つを押さえておきたいです。
複数の値を格納する型は、1つの値の中に、複数の値を保持します。これらの型は、値のグループのようなものです。大量のデータを効率よくあつかうときに、こうした型が活用されます。
| 種類 | 型 | 説明 |
|---|---|---|
| リスト | list | 0からはじまる連番で値を管理 |
| タプル | tuple | リストに似ているが、定義したあとに値の変更ができない |
| 辞書 | dict | キーと値のペアで値を管理 |
それではリストから見ていきましょう。
リスト
Pythonのリストは、他のプログラミング言語の配列に相当するものです。リストは複数の値をまとめてあつかいます。各値は0から始まる連番で保持されます。リスト内の各値は要素と呼びます。最初の要素は要素0、次の要素は要素1です。
リストは[ ]で作り、各要素はカンマ区切りで並べます。リストの長さはlen()関数で得ます。
data = [10, 20, 30] print(data) # 「[10, 20, 30]」と表示 print(len(data)) # 「3」と表示
要素の値を得るときは[ ]を使います。[ ]を使うことで、特定の位置に値を代入することもできます。
data = [10, 20, 30, 40, 50] print(data[0]) # 「10」と表示 print(data[1]) # 「20」と表示 data[1] = 22 # 要素1に22を代入 print(data[1]) # 「22」と表示
要素の位置にマイナスの数値を指定したときは、末尾から数えます。
data = [10, 20, 30, 40, 50] print(data[-1]) # 「50」と表示 print(data[-2]) # 「40」と表示
要素を指定するときに、範囲外を指定するとエラーが出るので注意してください。たとえば要素数が5のときに、5以上の位置を指定するとエラーが出ます。要素数が5のときは要素の番号は0〜4です。
data = [10, 20, 30, 40, 50] print(data[5]) # 「IndexError: list index out of range」と表示して終了
リストのスライス(一部の切り抜き)を得るときも[ ]を使います。たとえば[1:3]と書けば、要素1から要素3の手前まで、つまり要素1、要素2という意味になります。
data = [10, 20, 30, 40, 50] data2 = data[1:3] # 要素1から、要素3の手前までスライス print(data2) # 「[20, 30]」と表示
リストには、append()関数で末尾に要素を追加したり、+=で要素をまとめて追加したりできます。
data = [10, 20, 30] data.append(40) print(data) # 「[10, 20, 30, 40]」と表示 data += [50, 60] print(data) # 「[10, 20, 30, 40, 50, 60]」と表示
リストの各要素の処理はfor文でおこなえます。for文は、for 変数 in リスト:と書きます。for文のあとの処理は、インデントしてグループ化します。
プログラムと出力の例です。
animals = ["cat", "dog", "bear"]
for name in animals:
print(name)
cat dog bear
要素の番号も得たいときはenumerate()関数を組み合わせます。for 番号用の変数, 値用の変数 in enumerate(リスト):と書きます。
プログラムと出力の例です。
animals = ["cat", "dog", "bear"]
for i, name in enumerate(animals):
print(i, name)
0 cat 1 dog 2 bear
タプル
タプル(tuple)はリストの仲間です。リストと違い、定義したあとに、要素の個数や値を変更できません。( )で作り、要素をカンマ区切りで並べます。値が変更できないこと以外は、リストと同じようにあつかえます。
data = (10, 20, 30) print(data) # 「[10, 20, 30]」と表示 print(len(data)) # 「3」と表示 print(data[0]) # 「10」と表示 print(data[0:2]) # 「(10, 20)」と表示
for文でも同じように使えます。
data = (10, 20, 30)
for num in data:
print(num)
タプルは、list()関数でリストに変換できます。
data = (10, 20, 30) print(data) # 「(10, 20, 30)」と表示 print(list(data)) # 「[10, 20, 30]」と表示
タプルは、,区切りだけでも作れます。また、左辺に,区切りの変数を書くことで、各要素の値を受け取れます。丸括弧を付けても、付けなくてもよいです。この分割受け取りの書き方は、リストでもおこなえます。
data = 10, 20, 30 # タプル 括弧なし print(data) # 「(10, 20, 30)」と表示 (a, b, c) = data # タプル 変数で受け取り print(a, b, c) # 「10 20 30」と表示 a, b, c = data # タプル 変数で受け取り 括弧なし print(a, b, c) # 「10 20 30」と表示
辞書
辞書は、他のプログラミング言語の連想配列に相当するものです。複数の値をまとめてあつかう型です。各要素を、キーと値のペアで表します。
辞書は{ }で作り、要素は,で区切ります。各要素は、キーと値を"key" : "value"のように:で分けて書きます。辞書の要素数はlen()関数で得ます。
各要素は、辞書のあとに[ ]を書き、その中にキーを書くことで読み書きできます。
data = {"name": "tama", "age": 10}
print(data) # 「{'name': 'tama', 'age': 10}」と表示
print(len(data)) # 「2」と表示
print(data["name"]) # 「tama」と表示
data["age"] = 11 # ageの値を書き換え
print(data["age"]) # 「11」と表示
辞書をfor文で処理するときは、辞書のitems()関数を使うとよいです。キーと値を、それぞれ変数で受け取れます。
プログラムと出力の例を示します。
data = {"name": "tama", "age": 10}
for k, v in data.items():
print(f"key:{k}, value: {v}")
key:name, value: tama key:age, value: 10

条件分岐
プログラムの処理では、値によって処理を分岐させることが多いです。そうした機能を実現するのが、条件分岐という仕組みです。
条件分岐を使うと、値がaのときはAの処理を……、bのときはBの処理を……、といった感じで処理の内容を分けることができます。Pythonではif文で条件分岐を実現できます。
if文
if 条件式:と書き、条件式がTrueになるなら、後続のインデントしたグループ内の処理をおこないます。
プログラムと出力の例を示します。1つ目のif文では、条件式がTrueなので後続のグループ内の処理がおこなわれます。2つ目のif文では、条件式がFalseなので処理はおこなわれません。
if True:
print("処理1")
print("処理2")
if False:
print("処理3")
print("処理4")
処理1 処理2
if文は、1行で書くこともできます。処理が短いときは、1行で書くこともあります。プログラムと出力の例を示します。
if True: print("処理1")
if False: print("処理2")
処理1
比較演算子
if文の条件式には、ふつうはTrueやFalseの値を書くのではなく式を書きます。変数の値によって処理を分岐させるためです。こうした判定をおこなうのが比較演算子です。
ある変数の値が、指定の値と同じなのか、以上なのか、以下なのか。そうした比較をおこなう演算子を示します。
| 式の例 | 説明 |
|---|---|
| x == y | xとyが等しいならTrue、違うならFalse |
| x != y | xとyが等しいならTrue、違うならFalse |
| x > y | xがyよりも大きいならTrue、違うならFalse |
| x < y | xがyよりも小さいならTrue、違うならFalse |
| x >= y | xがyと等しいか大きいならTrue、違うならFalse |
| x <= y | xがyと等しいか小さいならTrue、違うならFalse |
| x in y | xという要素がyに存在するならTrue、違うならFalse |
| x not in y | xという要素がyに存在しないならTrue、違うならFalse |
たとえば、「2以下」といった条件式は、<=を使い、次のように書けます。
data = [0, 1, 2, 3, 4]
for num in data:
if num <= 2:
print(num, "OK")
0 OK 1 OK 2 OK
if~else文
if〜elseと書くことで、条件式がFalseのときの処理も書けます。
data = [0, 1, 2, 3, 4]
for num in data:
if num <= 2:
print(num, "OK")
else:
print(num, "範囲外")
0 OK 1 OK 2 OK 3 範囲外 4 範囲外
if~elif~else文
if〜elif~elseと書くことで、細かな分岐もできます。elifは複数書くこともできます。
data = [0, 1, 2, 3, 4]
for num in data:
if num <= 1:
print(num, "1以下")
elif num <= 3:
print(num, "3以下")
else:
print(num, "範囲外")
0 1以下 1 1以下 2 3以下 3 3以下 4 範囲外
論理演算子
if文の条件式には、さらに複雑な式を書くこともあります。「0以上、3未満」のように、複数の条件を指定するような場合です。そうした機能を実現してくれるのが論理演算子です。
| 式の例 | 意味 | 説明 |
|---|---|---|
| x and y | 論理積 | xとyの両方がTrueならTrue、違うならFalse |
| x or y | 論理和 | xとyの両方、あるいはいずれかがTrueならTrue、違うならFalse |
| not x | 否定 | xがTrueならFalse、xがFalseならTrue |
たとえば、「0以上、3未満」といった条件式は、andを使い、次のように書けます。
data = [-1, 0, 1, 2, 3, 4]
for num in data:
if num >= 0 and num < 3:
print(num, "OK")
else:
print(num, "範囲外")
-1 範囲外 0 OK 1 OK 2 OK 3 範囲外 4 範囲外

