複数の変数をまとめて管理。番号(添え字)で区別する。添え字は0~要素数-1まで。
# リストを作る lst = [5,9,8,7,3] #リストの値を表示 print(lst[2]) # 2番目を表示 #リストに値を入れる #リスト名[添え字] = 値 lst[0]=10 #リストにデータ追加 lst.append(20) #リストからn番目を削除 lst.pop(n) # リストからデータ9を削除 lst.remove(9) #リストの要素数 # len(リスト) len(lst)
lst = [5,9,8,7,3] for num in lst: print(num)
何番目かも表示したいときにはenumerate関数を使う
lst = [5,8,9,7,4] for index,val in enumerate(lst): # 0から開始 print(index,"番目:",val) for index,val in enumerate(lst,1): # 1から開始 print(index,"番目:",val)
2つのリストを同時に全要素アクセスしたいときにはzip関数を使う
names = ['りんご','みかん','いちご'] prices = [100,200,150] for name,price in zip(names,prices): print(name,price)
if lst: print("1つ以上の要素有り") if not lst: print("要素無し") if 10 in lst: print("10がある")
lst = [5,9,8,7,3] lst.sort() # 昇順 print(lst) lst.sort(reverse=True) # 降順 print(lst) lst2 = sorted(lst) # 元を変更せずに整列 print(lst2) lst.reverse() # 逆順 print(lst)
lst = [5,9,8] num1, num2, num3 = lst*を付けた変数には残りリストを代入可能
lst = [5,9,8,7,4] num1, num2, *other = lst # num1=5,num2=9,other=[8,7,4]
これは最後だけでは無く、最初や中間にも書ける。
リストから別のリストを生み出す。
# 条件なし lst = [変数への処理 for 変数 in リスト] # 条件があるとき lst = [変数への処理 for 変数 in リスト if 条件]
lst = [1,3,4] # リストの要素を全て二倍 lst2 = [num*2 for num in lst] print(lst2) # 2,6,8 # リストから1より大きい要素を抜き出す lst3 = [num for num in lst if num > 1] print(lst3) # 3,4
複数の値をまとめて管理。番号(添え字)で区別する。添え字は0~要素数-1まで。
リストとの違いは変更できないこと
# タプルを作る tpl = (5,9,8,7,3) # タプルは()は必須ではなく、カンマが必須 tpl = 5,9,8,7,3 # 一個の要素でもタプルにしたいならカンマが必要 tpl = (5,) # タプル関数(リストからの変換) tpl = tuple([5,9,8,7,3]) # list関数(リストへの変換) lst = list(tpl) #要素表示 print(tpl[0]) #要素数 print(len(tpl))
tpl = (5,9,8,7,3) for num in tpl: print(num)
キーと値のペアをまとめて管理。添え字の代わりにキーを指定する。
# 辞書を作る dic = {"ringo":100,"mikan":120,"ichigo":200} # dict関数の場合 dic = dict(ringo=100,mikan=120,ichigo=200) # 値の表示 print( dic["ringo"] ) # 値の変更 dic["ringo"] = 110 # 値の追加 dic["momo"] = 300 # 値の削除 dic.pop("mikan") # もしくは del dic["mikan"] # キーの有無判定 if 'ringo' in dic: print("ある")
2つの辞書の合体。
dic1 = dict(ringo=100,mikan=120) dic2 = dict(ringo=200,ichigo=200) # 合体 dic1.update(dic2) # 表示 print( dic1 ) # {'ringo': 200, 'mikan': 120, 'ichigo': 200}
keys()で全てのキー、values()で全ての値、items()で全てのペア(タプル)がとれる
# 全てのキー(dic.keys()でも同じ) for key in dic: print(key) print(dic[key]) # 全ての値 for value in dic.values(): print(value) # 全てのペア for key,value in dic.items(): print(key) print(value)
辞書・リストから別の辞書を生み出す。
lst = {キー:値 for 変数 in リスト}
# 文字列とその長さ lst = ['apple','book','pen'] dic = {item:len(item) for item in lst} print(dic) # {'apple': 5, 'book': 4, 'pen': 3}
重複と順番が無いリスト
# セットを作る ken = {"熊本","福岡","長崎"} # 追加 ken.add("宮崎") ken.add("熊本") # 追加されない #削除 ken.remove("長崎") # 全て表示 {'熊本', '福岡', '宮崎'} print( ken )
in演算子で要素がセット無いにあるかどうかがわかる。
if "熊本" in ken: print("熊本があります")
for k in ken: print(k)
ken = {"熊本","福岡","長崎"} shin = {"熊本","福岡","佐賀"} print( ken - shin ) # 差分 長崎 print( ken | shin ) # OR 熊本、福岡、長崎、佐賀 print( ken & shin ) # AND 熊本 福岡 print( ken ^ shin ) # XOR 長崎 佐賀
リスト、タプル、文字列など
+演算子で連結
lst = [1,2,3] lst2 = [4,5,6] lst3 = lst+lst2 print(lst3)# 1,2,3,4,5,6
*演算子で複製して連結
lst = [1,2,3]*2 print(lst) # 1,2,3,1,2,3
lst = [5,8,9] print(8 in lst) # True
lst = [5,8,9] print(8 not in lst) # False
[開始:終了]で部分取得できる。開始~終了-1まで。指定しない場合には最初または最後まで。マイナスは後ろから数える。
lst = [5,8,9,1,3] print( lst[1:3]) # 8,9 print( lst[:3]) # 5,8,9 print( lst[3:]) # 1,3 print( lst[:-1]) # 5,8,9,1 print( lst[-2:]) # 1,3
[開始:終了:増分]も可能。マイナスは後ろから数える。
lst = [5,8,9,1,3,4] print( lst[0:6:2]) # 8,9 print( lst[:3]) # 5,8,9 print( lst[3:]) # 1,3 print( lst[:-1]) # 5,8,9,1 print( lst[-2:]) # 1,3