リスト内包表記ってすごい

ふと、pythonのリスト内包表記というのを知ったので、使い方をメモしておく。


こういうリストが欲しいと思ったとき
[1, 3, 5, 7, 9]
考え方は、10より小さい奇数、と、考えると、こういう風になる
[i for i in range(10) if i%2 == 1]
1変数の場合のみではなく、2変数の処理も可能で、例えば九九の結果を表示するにあたり
[i*j for i in range(10) for j in range(10)]
かけ算の表示までやると
[str(i) +'*'+ str(j) + '=' str(i*j) for i in range(10) for j in range(10)]
通常の九九にはない、0のかけ算が表示されるのを取り除くには、
[str(i) +'*'+ str(j) + '=' str(i*j) for i in range(10) for j in range(10) if i*j != 0]


ほか、文字列を使うこともできて
>>> str = 'this is a word'
>>> [c.upper() for c in str]
['T', 'H', 'I', 'S', ' ', 'I', 'S', ' ', 'A', ' ', 'W', 'O', 'R', 'D']


こりゃ、すごい。mapとよりも面白い。