<Python> リスト内包表記

リスト内包表記の練習。
まずリストセット。

In [1]: l1 = [1,2,3]

In [2]: l2 = ['a', 'b', 'c']

In [3]: l3 = [4,5,6]

で、内包表記。
for ~ in2回だと、全組み合わせがまわる。 セットで取り出だす場合は、zip()を使う。

In [4]: [ v * 2 for v in l1 ]
Out[4]: [2, 4, 6]

In [5]: [ v + w * 10 for v in l1 for w in l3 ]
Out[5]: [41, 51, 61, 42, 52, 62, 43, 53, 63]

In [7]: [ v + w * 10 for v,w in zip(l1, l3) ]
Out[7]: [41, 52, 63]

で、ディクショナリdict for ~ inだと最後の変数しか取らないらしい。。。 へー。。。

In [9]: { v: w  for v in l2 for w in l1 }
Out[9]: {'a': 3, 'b': 3, 'c': 3}

In [10]: { v: w  for v,w in zip(l2, l1) }
Out[10]: {'a': 1, 'b': 2, 'c': 3}