リストの基本
リストは [ ]角括弧(ブラケット)を使う。
[要素1, 要素2, 要素3…]
[1, 2, 3, 4, 5] # 文字列はダブルクォーテーションかシングルクォーテーションで囲む ["red", "green", "blue"]
Pythonは動的型付けなので、各要素に異なる型のデータを格納することも可能
[10, "桜木", True]
リストの要素を取得する
リストの各要素にアクセスするにはインデックス(添え字)を使う。
リスト[インデックス]
リストの要素を前から取得
インデックスは 0 からはじまり、その後 1, 2, 3, … と順番に割り当てられる。
[“red”, “green”, “blue”]
上記のリストの場合、インデックス0は 「red」 、インデックス1は 「green」、インデックス2が「blue」となる。
colors = ["red", "green", "blue"] print(colors[0]) # red print(colors[1]) # green print(colors[2]) # blue
リストの要素を後ろから取得
インデックスを負の数にすると、リストの後ろから取得できる。
インデックス-1がリストの最後の要素にあたる。
colors = ["red", "green", "blue"] print(colors[-1]) # blue print(colors[-2]) # green print(colors[-3]) # red
リストの要素を特定の位置指定で取得する(スライス)
[start:end:step]
start:始まりのインデックス
end:終わりは指定したendの一つ手前のインデックス(3で指定されていたら、インデックス2まで)
step:加算する数(指定がなければ 1 )
kana = ['あ', 'い', 'う', 'え', 'お'] print(kana[1:4]) # インデックス1からインデックス3 print(kana[:3]) # 先頭からインデックス2まで print(kana[3:]) # インデックス3から最後まで print(kana[1:4:2]) # インデックス1からインデックス3まで2ずつ加算 """ 結果: ['い', 'う', 'え'] ['あ', 'い', 'う'] ['え', 'お'] ['い', 'え'] """
リストの要素数を取得
len(リスト)
numbers = [3, 7, 12, 16, 25] print(len(numbers))
リストに特定の値が含まれているか確認
値 in リスト
numbers = [3, 7, 12, 16, 25] # 7が含まれていたらTrue print(7 in numbers) # True # 6が含まれていたらTrue print(6 in numbers) # False # not in だと逆になる print(7 not in numbers) # False print(6 not in numbers) # True
特定の値のインデックスを取得(index)
リスト.index(値)
numbers = [3, 7, 12, 16, 25] print(numbers.index(16)) # 3
特定の値の数を取得(count)
リスト.count(値)
# リストの中に「3」 がいくつあるか numbers = [3, 7, 3, 12, 16, 25] print(numbers.count(3)) # 2
リストに要素を追加する
リストの最後に追加(append)
リスト.append(値)
numbers = [10, 30] numbers.append(40) print(numbers) # [10, 30, 40]
リストに別のリストの要素を追加する(extend)
リスト.extend(リストなどのイテラブルオブジェクト)
numbers = [10, 30] numbers.extend([40,50]) print(numbers) # [10, 30, 40, 50]
もし、extendではなく append だった場合↓
numbers = [10, 30] numbers.append([40,50]) print(numbers) # [10, 30, [40, 50]]
リスト自体が一つの要素として追加される。
指定した位置へ要素を追加する(insert)
リスト.insert(インデックス, 値)
指定したインデックスの位置に挿入される。
numbers = [10, 30, 40] numbers.insert(1, 20) print(numbers) # [10, 20, 30, 40]
スライス機能を使って要素を追加する
リスト[開始インデックス:終了インデックス] = 追加リスト
numbers = [10, 20, 30, 40, 50] numbers[2:2] = ["A", "B"] print(numbers) # [10, 20, 'A', 'B', 30, 40, 50]
要素の置き換えもできる
numbers = [10, 20, 30, 40, 50] numbers[1:4] = ["A", "B"] print(numbers) # [10, 'A', 'B', 50]
リストの要素を削除する
最後の要素 or インデックスで指定した要素を削除(pop)
リスト.pop()
リスト.pop(インデックス)
pop()メソッドは指定した位置の要素をリストから削除して、その要素を返します。
インデックスを指定しなければ、リストの最後の要素をリストから削除し、その要素の値を取得できる。
インデックス指定があれば、指定した位置の要素を削除し、その要素を取得できる。
numbers = [10, 20, 30, 40, 50] print(numbers.pop()) # 50 print(numbers) # [10, 20, 30, 40] print(numbers.pop(2)) # 30 print(numbers) # [10, 20, 40]
インデックスやスライスで位置・範囲を指定して削除(del)
del文もインデックスで指定して要素を削除するが、pop()メソッドと違い、値を返さない。
del リスト[インデックス]
numbers = [10, 20, 30, 40, 50] del numbers[2] print(numbers) # [10, 20, 40, 50]
スライスを使ってまとめて削除もできる。
del リスト[開始インデックス:終了インデックス]
numbers = [10, 20, 30, 40, 50] del numbers[1:4] print(numbers) # [10, 50]
なんなら、del文使わなくてもスライス機能だけで削除できる。
numbers = [10, 20, 30, 40, 50] numbers[1:4] = [] print(numbers) # [10, 50]
特定の値を指定して削除(remove)
リスト.remove(値)
colors = ['red', 'blue', 'pink'] colors.remove('blue') print(colors) # ['red', 'pink']
削除したい値がリストの中に複数ある場合、最初の要素が削除される。
colors = ['red', 'blue', 'pink', 'blue'] colors.remove('blue') print(colors) # ['red', 'pink', 'blue']
全ての要素を削除(clear)
clear()メソッドでリスト内の全ての要素を削除する。
リスト.clear()
numbers = [10, 20, 30, 40, 50] numbers.clear() print(numbers) # []
リストの結合
リスト1 + リスト2
list_1 = [10, 30] list_2 = [40, 50] new_list = list_1 + list_2 print(new_list) # [10, 30, 40, 50]
リストの要素を並び替える
リスト.sort()
リスト.sort(reverse = True)
numbers = [3, 2, 9, 1, 5] # 昇順に並べ替え numbers.sort() print(numbers) # [1, 2, 3, 5, 9] # 降順に並べ替え numbers.sort(reverse = True) print(numbers) # [9, 5, 3, 2, 1]
文字列、rangeからリストを作成
# 文字列をリスト化 lang = list('Python') print(lang) # ['P', 'y', 't', 'h', 'o', 'n'] # rangeを使ってリスト化 numbers = list(range(5)) print(numbers) # [0, 1, 2, 3, 4] #おまけ sub_list = ["@"] * 5 print(sub_list) # ['@', '@', '@', '@', '@']
リスト内包表記
リストを作成するときの方法のひとつ。
うまく使えば、シンプルにコードが書ける。
でも、複雑な内包表記は読みにくいので使う場所を考える。
リスト内包表記の基本型
[式 for 変数 in イテラブルオブジェクト]
# リスト内包表記を使用する方法 list_1 = [x*2 for x in range(5)] # for文を使って要素を追加する方法 list_2 = [] for x in range(5): list_2.append(x*2) # 表示は同じ print(list_1) print(list_2) # [0, 2, 4, 6, 8]
条件分岐したリスト内包表記
[式 for 変数 in イテラブルオブジェクト if 条件式]
# リスト内包表記を使用する方法 list_1 = [i for i in range(15) if i % 3 == 0] # for文を使って要素を追加する方法 list_2 = [] for i in range(15): if i % 3 == 0: list_2.append(i) # 表示は同じ print(list_1) print(list_2) # [0, 3, 6, 9, 12]