Pythonでforをできるだけ書きたくないマンのためのスニペット
はじめに
forをできるだけ書かずに縛りプレイやってみました。「読みにくい」とか「PEP8がー」とか知りません。 (※思いついたら随時更新します。)
同じ長さのリストで辞書を作る
list1 = ['a', 'b', 'c', 'd', 'e'] list2 = [1, 2, 3, 4, 5] result = {} for key, value in zip(list1, list2): result[key] = value
↓
list1 = ['a', 'b', 'c', 'd', 'e'] list2 = [1, 2, 3, 4, 5] result = dict(zip(list1, list2))
パースして辞書を作る
val1 = 'x=1;y=2;z=3' val2 = 'a:5,b:1,c:8' result = {} for v in val1.split(';'): key, value = v.split('=') result[key] = value for v in val2.split(','): key, value = v.split(':') result[key] = value
↓
val1 = 'x=1;y=2;z=3' val2 = 'a:5,b:1,c:8' result = { **dict(map(lambda x: x.split('='), val1.split(';'))), **dict(map(lambda x: x.split(':'), val2.split(','))) }
リストからn個ずつ要素を取り出してリストを作る
list1 = [1, 2, 3, 4, 5, 6] n = 2 result = [] for i in range(0, len(list1), n): result.append(list1[i:i+n])
↓
list1 = [1, 2, 3, 4, 5, 6] n = 2 result = [*zip(*[iter(list1)]*n)]
Thanks for reading!