リスト関連の操作まとめ。自分用チートシート。
学習の進度に合わせて、内容は随時追加する。
1. リスト内での演算
最大値を求める max(リスト名)
最小値を求める min(リスト名)
合計値を求める sum(リスト名)
li = [1, 2, 3, 4, 5]
print(max(li))
# 5
print(min(li))
# 1
print(sum(li))
# 15
2. リストの並び替え
sorted()
引数にはリスト名を指定。
デフォルトは昇順で、降順に並べ替えたい場合は引数reverse
をTrue
とする。
li = [3, 5, 2, 4, 1]
# 昇順で並び替え
list_sorted = sorted(li)
print(list_sorted)
# [1, 2, 3, 4, 5]
# 降順で並び替え
list_sorted = sorted(li, reverse=True)
print(list_sorted)
# [5, 4, 3, 2, 1]
3. リスト内の特定要素をカウントする(countメソッド)
リスト名.count(カウントする要素)
li = [1, 1, 1, 2, 1, 3, 5, 1, 6, 0, 4]
print(li.count(1))
# 5
4. リスト内の特定要素のインデックスを取得する
リスト名.index(取得する要素)
li = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j"]
print(li.index("f"))
# 5
5. リストの特定範囲を抽出
リスト[n-1 : m]
n番目 ~ m番目までを抽出
文字列から部分文字列を抽出する場合とほぼ同様、スライスを用いる。(下記URL、5-bの項)
li = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j"]
# 3~5文字目を抽出
print(li[2:5])
# ['c', 'd', 'e']
6. リストを連結する
リスト1 + リスト2
list_1 = [1, 2, 3, 4, 5]
list_2 = ["a", "b", "c", "d", "e"]
list_new = list_1 + list_2
print(list_new)
# [1, 2, 3, 4, 5, 'a', 'b', 'c', 'd', 'e']
7. リストに要素を追加する
7-a. 末尾に追加する(appendメソッド)
リスト名.append(追加する要素)
li = [1, 2, 3, 4, 5]
li.append(100)
print(li)
# [1, 2, 3, 4, 5, 100]
7-b. 指定の位置に追加する(insertメソッド)
リスト名.insert(インデックス, 値)
li = [1, 2, 3, 4, 5]
li.append(2, 100)
print(li)
# [1, 2, 100, 3, 4, 5]
8. リスト内の要素を削除する
del リスト名[インデックス]
li = [1, 2, 3, 4, 5]
del li[0]
print(li)
# [2, 3, 4, 5]
9. リストから重複する要素を削除する
9-a. 順序の保持が必要ない場合
set(リスト名)
setメソッドは、set型のオブジェクトを生成する。
リストやタプルにしたい場合は、変換操作が必要。
li = [1, 1, 1, 2, 3, 3, 4, 5, 5, 6, 6]
li_set = set(li)
# set型
print(li_set)
# {1, 2, 3, 4, 5, 6}
# リスト
print(list(li_set))
# [1, 2, 3, 4, 5, 6]
9-b. 順序を保持したい場合
dict.fromkeys(リスト名)
dict.fromkeys()
では新たな辞書オブジェクトを生成する。
リストやタプルにしたい場合は、変換操作が必要。
li = [3, 4, 2, 3, 5, 1, 4, 2, 1, 5, 0]
li_dict = dict.fromkeys(li)
# 辞書オブジェクト
print(li_dict)
# {3: None, 4: None, 2: None, 5: None, 1: None, 0: None}
# リスト
print(list(li_dict))
# [3, 4, 2, 5, 1, 0]
10. リスト内の全ての要素への演算
例題として、li = [1, 2, 3, 4, 5]
の全ての要素を2乗して出力する。
for文を用いて記述した場合は以下の通りとなる。
li = [1, 2, 3, 4, 5]
for i in range(len(li)):
li[i] = li[i]**2
print(li)
10-a. リスト内包表記
for文よりもシンプルに記述ができ、処理速度も速くなる。
li = [1, 2, 3, 4, 5]
li_new = [n**2 for n in li]
print(li_new)
# [1, 4, 9, 16, 25]
10-b. lambda式
li = [1, 2, 3, 4, 5]
li_new = map(lambda n: n ** 2, li)
print(list(li_new))
# [1, 4, 9, 16, 25]