Pythonには複数の値をひとまとめにできるデータ型があります。
このようなデータ型で基本的なものは、list(リスト)・ dict(辞書)・ tuple(タプル)・ set(セット)の4つです。
データ型 コード例 特徴
list(リスト) ["taro", 15] 値を順番に格納する(あとから値の追加・削除・変更ができる)
dict(辞書) {"name": "taro", "age": 15} キーと値をペアで格納する
tuple(タプル) ("taro", 15) 値を順番に格納する(あとから値の追加・削除・変更ができない)
set(セット) {"taro", 15} 値を重複せず格納する
リスト(PHPの配列のこと)
①要素とインデックス
['阿部', '伊藤', '上野']
・要素
リスト内のそれぞれの値を要素といいます。
・インデックス(PHPの配列のキーのこと)
インデックスとは要素の位置を表す数値のことです。
リストの先頭要素のインデックスは「0」です。
インデックスの指定に、負の値も使用でき、負のインデックスを使うと、末尾からの順番で要素を指定できます。末尾のインデックスは「-1」です。末尾の要素から逆順に「-1」、「-2」、「-3」、「-4」となります。
なお負のインデックスは、特に末尾の要素を取得するのに使われることが多いです。
負のインデックスの使い方
# 名前リスト
names = ["阿部", "伊藤", "上野"]
# インデックス-1(末尾)の要素
print(names[-1])
# インデックス-2の要素
print(names[-2])
実行結果
上野
伊藤
②リストの更新
names = ["阿部", "伊藤", "上野"]
# 値を更新
names[0] = "あべ"
names[1] = "いとう"
names[2] = "うえの"
③リストへ値の追加
+演算子を使うとリストを連結できます。
names = ["阿部", "伊藤", "上野"] # 名前リスト
names = names + ["遠藤", "岡田"] # リストを連結
print(names) # 連結後の名前リストを表示
④リストの繰り返し連結(同じものを連結する)
*演算子を使うと、同じリストを繰り返し連結できます。
たとえばリスト * 3のように書くと、リストを3回繰り返し連結します。
names = ["阿部", "伊藤", "上野"] # 名前リスト
names = names * 3 # 名前リストを3回連結
print(names) # 連結後の名前リストを表示
⑤リストのスライスでの要素の取得方法
スライスはリスト[開始位置:終了位置]のように書き、範囲の「開始位置」と「終了位置」を指定します。
範囲が0~7の場合
※終了位置は取得したいインデックス+1の数
範囲指定
リスト名[1:3] 取得値 1~2の値
省略指定
リスト名[:3] 取得値 0~2の値
リスト名[1:] 取得値 1~7の値
⑥リストとin演算子
⑴in 演算子 if "調べたい値 or 文字列" in リスト名:
⑵not in演算子 if "調べたい値 or 文字列" not in リスト名:
ある値がリスト中に存在するかを調べたい場合、in演算子を使います。
使い方は 「調べたい値 in リスト名」
chars = ["a", "b", "c"]
print("b" in chars) # リストに存在する値("b")
print("d" in chars) # リストに存在しない値("d")
in演算子は、if文の条件式で使われることが多いです。
names = ["阿部", "伊藤", "上野"]
if "伊藤" in names: # 「伊藤」が名前リストに存在するか
print("伊藤さんは名前リストにあります")
not in演算子は「存在しない」ことを判定するのに使います
not inを使った場合、以下のように「存在しない」場合にTrue、「存在する」場合にFalseとなります。
chars = ["a", "b", "c"]
print("d" not in chars) # リストに存在しない値("d")
print("b" not in chars) # リストに存在する値("b")
⑦よく使う関数
・len()関数
リストの要素数の確認にはlen(リスト名)を使う
len()はリストの要素数や変数の文字列の文字数などいろいろな使い方ができる
names = ["阿部", "伊藤", "上野"] # 名前リスト
print(len(names)) # 名前リストの要素数を表示
・append()関数
リスト名.append("追加したい値")でリストの末尾に値を追加できます。
names = ["阿部", "伊藤", "上野", "遠藤"]
names.append("岡田") # 末尾に「岡田」を追加
print(names) # 名前リストを表示
・extend()関数
複数の値をリストの末尾に追加する場合は、extend()というメソッドを使います。
names = ["阿部", "伊藤", "上野"]
names.extend(["遠藤", "岡田"]) # 遠藤と岡田をまとめて追加するときはリストなので値を[]で囲う
・insert()関数
リスト.insert(インデックス, 値)でリストの任意の位置に値を追加できる
names = ['阿部', '伊藤', '上野']
names.insert(2, "安藤") # 2番目に「安藤」を追加
単体の値を追加したい場合はappend()、複数の値を追加したい場合はextend()、追加する順番を指定したいときはinsert()を使う
・pop()関数
pop()メソッドを使うと、リストから要素を削除できます。
このとき、削除される要素の取得も同時に行えます。削除した要素を表示したいときはpop()を使う
使い方
⑴要素を削除
リスト.pop()で末尾の要素を削除
リスト.pop(インデックス番号)で指定したインデックスの要素を削除
⑵削除した要素を表示変数名.pop()でリストの末尾を削除して変数に代入する場合
変数名.pop(0)でリストの希望の要素を削除して変数に代入する場合は要素のインデックスを指定
names = ["阿部", "伊藤", "上野"] # 名前リスト
name = names.pop(1) # インデックス1の要素を削除して、削除した要素を変数に代入
print(name) # 取得した要素を確認
print(names) # 要素が削除されたことを確認