pythonの配列、dictionaryの生成方法、ループ方法をまとめてみました。
新しい言語を学ぶ際には取り急ぎ配列、dictionaryの生成方法、ループ方法を抑えておきたいと思いますので、そのような情報がまとまっていれば便利だと思い、自分への備忘録も兼ねて本記事を投稿致しました。
最近pythonに入門された方の参考になったり、備忘録的な形で利用していただければ幸いです。
※Python 3.7.6で実施しました。
配列のループ
# 配列生成
arr = [] # 空配列生成
arr = [1, 2, 3] # 要素のある配列生成
# 1~5までの配列要素追加
# ※ range(start, stop)でstart~stop-1までが繰り返される。
# startを指定しない場合は0から開始される。
for i in range(1, 6):
arr.append(i)
# 配列のループ
for val in arr:
print(f"val:{val}")
# indexを持つ配列のループ
for index, val in enumerate(arr):
print(f"index:{index}, val:{val}")
index付きループをさせたい場合にenumerate
のスペルをよく間違えるので
自分へのコピペ用にしようと思います。。
dictionaryのループ
dic = {} # 空dictionary生成
dic = {"key1": 1, "key2": 2} # 要素のあるdictionary生成
# dictionaryの追加
for i in range(1, 6):
key = f"key{i}"
dic[key] = i
# dictionaryのkeyをループ
for key in dic.keys():
print(f"key:{key}, val:{dic[key]}")
# dictionaryのvalueをループ
for val in dic.values():
print(f"val:{val}")
# dictionaryのkey, valueをループ
for key, val in dic.items():
print(f"key:{key}, val:{val}")
dictionaryのitems()
は配列のenumerate
のスペルよりは大分出てきやすいですね
dictionaryはkeyだけループさせたい場合もvalueだけループさせたい場合も
とりあえずitems()
を利用してkey,value両方取れるようにしてしまって良いと思います。
リスト内包表記
配列やdictionaryから新たな配列やdictionaryを生成したい場合に利用します。
通常の方法であれば、まず空配列を作り、次に元の配列をループさせて新たな配列に要素を追加するという手順を踏む必要がありますが、内包記法を用いればそのような操作が1行で実現できます。
パフォーマンスも向上します。
# 元の配列・dictionaryの初期化
arr = [1, 2, 3, 4, 5]
dic = {"key1":1, "key2": 2, "key3": 3, "key4": 4, "key5": 5}
# 配列から配列 (各配列要素を2倍に)
conv_arr = [val * 2 for val in arr]
print(conv_arr)
# 配列からdict (indexをkeyに)
conv_dic = {f"key{index + 1}": val for index, val in enumerate(arr)}
print(conv_dic)
# dictから配列 (key-valueの文字列に)
conv_arr = [f"{key}-{val}" for key, val in dic.items()]
print(conv_arr)
# dictからdictに (keyを大文字にし、valueを2倍に)
conv_dic = {key.upper(): val * 2 for key, val in dic.items()}
print(conv_dic)
文法的には配列の場合が
[式 for 任意の変数名 in イテラブルオブジェクト]
dictionaryの場合が
{キー: 値 for 任意の変数名 in イテラブルオブジェクト}
となります。
リスト内包表記(IF付き)
リスト内包表記にIF条件を付与し、条件に合致する要素のみを抽出する事もできます。
# 元の配列の初期化
arr = [1, 2, 3, 4, 5]
# 配列から配列 (偶数要素のみを取得しかつ要素を10倍に)
conv_arr = [val * 10 for val in arr if val % 2 == 0]
print(conv_arr)
本記事が少しでも皆様のご参考になりましたら幸いです。
それでは良いpythonライフを!