List
List
は、各種データを入れる配列のようなものです。
公式チュートリアルの該当部分はこちら
データ構造はこんな感じ。要素は別に数字に限らず、List も含めて、色んな要素が入っても大丈夫です。あとから、要素の追加削除もできます。
[0, 1, 2, 3, 4]
初期化
# 初期化
lst = [0, 1, 2, 3, 4]
print(lst) # 出力: [0, 1, 2, 3, 4 ]
要素アクセス
# index アクセス
print('lst[2]:', lst[2]) # 出力 lst[2]: 2
追加・サイズ・合計値
# 追加
lst.append(5) # 5 を追加
print(lst) # 出力 [0, 1, 2, 3, 4, 5 ]
lst2 = list(range(6, 10)) # 6 から 10 (含まず)の range をリストに
print(lst2) # 出力 [ 6, 7, 8, 9 ]
lst.extend(lst2) # lst に lst2 追加
print(lst) # 出力 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(len(lst), sum(lst)) # サイズと合計値、出力 10 45
index 指定での削除・挿入
# index 削除・挿入
lst.insert(1, 11) # 1番目の要素として 11 を挿入
print(lst) # 出力 [0, 11, 1, 2, 3, 4, 5, 6, 7, 8, 9]
lst.pop(1) # 1番目の要素を削除
print(lst) # 出力 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
要素の検索・削除
# 検索・削除
# 値 8 が lst に含まれるかどうか
print('8 in lst:', 8 in lst) # 出力 8 in lst: True
# 値 8 を検索し index を返す
print('lst.index(8):', lst.index(8)) # 出力 lst.index(8): 8
lst.remove(8) # lst から値 8 の要素を削除
print(lst) # 出力 [0, 1, 2, 3, 4, 5, 6, 7, 9]
# 1..9 (9含まず) の範囲で 値 6 を検索
print('lst.index(6, 1, 9):', lst.index(6, 1, 9)) # 出力 lst.index(6, 1, 9): 6
slice(部分リスト)
# slice (部分リスト)
print('lst[3:6]:', lst[3:6]) # 出力 lst[3:6]: [3, 4, 5]
print('[lst[:3]:', lst[:3]) # 出力 [lst[:3]: [0, 1, 2]
print('lst[6:]:', lst[6:]) # 出力 lst[6:]: [6, 7, 9]
print('lst[0:8:2]:', lst[0:8:2]) # 出力 lst[0:10:2]: [0, 2, 4, 6]
list に対する順次アクセス
# list に対する順次アクセス、 for ループ3パターン
lst = lst[:4] # [0, 1, 2, 3] に
i = 0
for elem in lst:
print(f"A: {i} 番目: {elem}")
i += 1
for i in range(len(lst)):
print(f"B: {i} 番目: {lst[i]}")
for i, elem in enumerate(lst):
print(f"C: {i} 番目: {elem}")
list に順次アクセスし、list 作成
いくつか方法を載せておきます。
# list を順番にアクセスし、 list 作成
result = [] # 最初は普通のループ
for elem in lst:
result.append(elem * elem)
print(result)
result2 = [elem * elem for elem in lst] # 内包表現
print(result2)
result3 = list(map(my_sqrt, lst)) # map 関数
print(result3)
result4 = list(map(lambda n: n * n, lst)) # map + lambda
print(result4) # 出力:
2 つ(以上)の list を順番にアクセス
# 2 つ(以上)の list を順番にアクセス
lstA = list(range(4)) # [0, 1, 2, 3]
lstB = list(range(0, 12, 3)) # [0, 3, 6, 9]
print(lstA, lstB)
# lstA: [0, 1, 2, 3] と lstB: [0, 3, 6, 9] の要素を
# 順に a, b に割り当ててloop
for a, b in zip(lstA, lstB):
print(f"a: {a}, b: {b}")
# 内包表記も可能
lstAB = [f"a: {a}, b: {b}" for a, b in zip(lstA, lstB)]
print(lstAB) # ['a: 0, b: 0', 'a: 1, b: 3', 'a: 2, b: 6', 'a: 3, b: 9']