変数関連Tips
リスト
値の重複のないリストを作るには
noduplist = list(set(duplist))
リストから削除
list.remove(item)
リストの指定した位置へ挿入
list.insert(0, item)
リストの最後に追加
list.append(item)
リストの(最後or先頭)から1つ取り出しリストから削除
item = list.pop()
リスト内包表記
for文使わずにリストを生成する。
リスト = [式 for 変数名 in イテラブルオブジェクト]
「式」は、代入するリストの一つ分。
以下の例は、内包表記をネストしたもの。
path配下の「フォルダー名/そのフォルダー配下のファイルのパス名」の文字列のリストを作る。
1 |
filelist = [f'{fl}/{fi}' for fl in os.listdir(path) for fi in os.listdir(os.path.join(path, fl))] |
内包表記にif文を入れて、条件に合うものだけをリストに入れることも可能。
1 |
filelist = [f'{fl}/{fi}' for fl in os.listdir() if os.path.isdir(fl) for fi in os.listdir(fl) if os.path.isfile(os.path.join(fl, fi))] |
辞書
辞書の全キーと値の対を取得
keys = dict.keys()
for key in keys:
value = dict[key]
print(f'{key} : {value}')
あるいは
for (key, value) in dict.items():
print(f'{key} : {value}')
辞書の内包表記
1 |
hashdata = {f : (hash, w, h) for f, (hash, w, h) in zip(filelist, map(get_image_hash, filelist))} |
※zip()やmap()は以下参照。
イテレータブルな用途に使う関数
map()
map()関数は、第一引数の関数に、第二引数のリストを一つずつ渡して実行した結果のイテレーターを返す。
zip()
zip()は、引数のイテレータブルなものから一つずつ取り出してまとめて返す。
数字の文字列をint化
i = int('1')
intを文字列化
s = str(1)