Python 3のリスト・セット・タプル・辞書の初期化と内包記法、ジェネレーター式
[1,2,3,1,2,3] #リスト {1,2,3,1,2,3} #セット (1,2,3,1,2,3) #タプル {1: 1, "name": "name"} #辞書 [i for i in [1,2,3,1,2,3] if i % 2 == 0] #リスト内包記法 {i for i in [1,2,3,1,2,3] if i % 2 == 0} #セット内包記法 {i*5: i for i in [1,2,3,1,2,3] if i % 2 == 0} #辞書内包記法 (i for i in [1,2,3,1,2,3]) #ジェネレータ式
リスト
[1,2,3,1,2,3], type([1,2,3,1,2,3]) #>>> ([1, 2, 3, 1, 2, 3], <class 'list'>)
セット
{1,2,3,1,2,3}, type({1,2,3,1,2,3}) #>>> ({1, 2, 3}, <class 'set'>)
タプル
1,2,3,1,2,3, type((1,2,3,1,2,3)) #>>> (1, 2, 3, 1, 2, 3, <class 'tuple'>) (1,2,3,1,2,3), type((1,2,3,1,2,3)) #>>> ((1, 2, 3, 1, 2, 3), <class 'tuple'>)
辞書
{1: 1, "name": "name"}, type({1: 1, "name": "name"}) #>>> ({1: 1, 'name': 'name'}, <class 'dict'>)
リスト内包記法
[i for i in [1,2,3,1,2,3]] #>>> [1, 2, 3, 1, 2, 3] [i for i in [1,2,3,1,2,3] if i % 2 == 0] #>>> [2, 2]
セット内包記法
{i for i in [1,2,3,1,2,3]} #>>> {1, 2, 3} {i for i in [1,2,3,1,2,3] if i % 2 == 0} #>>> {2}
辞書内包記法
{i*5: i for i in [1,2,3,1,2,3]} {i*5: i for i in [1,2,3,1,2,3] if i % 2 == 0} #>>> {5: 1, 10: 2, 15: 3} #>>> {10: 2}
ジェネレータ式
(i for i in [1,2,3,1,2,3]) #>>> <generator object <genexpr> at 0x0330F878> list((i for i in [1,2,3,1,2,3])) #>>> [1, 2, 3, 1, 2, 3] list((i for i in [1,2,3,1,2,3] if i % 2 == 0)) #>>> [2, 2]
他の書き方
内包記法で書かれるものは他の方法でも記述することができます。例えば、リストはmap関数とlambdaの組み合わせで次のように書けます。
list(map(lambda i: i, range(5))) #>>> [0, 1, 2, 3, 4]