リスト内包表記について【教えてください】
Pythonの構文でリスト内包表記というのがあります。
何かというと、
というプログラムを、
>>> for i in range(1,10):
... print i
こういう風に書けるものです。ワンライナーで書くときは重宝しますね。
>>> [ i for i in range(1,10)]
[1, 2, 3, 4, 5, 6, 7, 8, 9]
で、これをみた方は、「じゃあif文はどうするんだ?」と思うと思います。
実はif文もリスト内包表記で書けるのです。
for文のすぐ後に書くと、こうやってif文が生きます。
>>> [i for i in range(10) if i % 2 == 0]
[0,2,4,6,8]
じゃあ、他の文も書けるだろうと思って、
リスト内の数値を全部足すプログラムを、
>>> list = [1,2,3,4,5,6,7,8,9]
>>> sum = 0
>>> for i in range(len(list)):
... sum += list[i]
>>> sum
45
と書くと、何故かエラーが出ます。
>>> [sum for i in range(len(list)) sum += list[i] ]
これはなんなんでしょうね。
File "", line 1
[ sum for i in range(len(list)) sum += list[i] ]
^
SyntaxError: invalid syntax
何が悪いんでしょう。[ ]がネストされているからでしょうか?
解決策がある方、ぜひ教えてください!
次回予告
次回は、おそらくリストのネストをテーマにして書いてみようと思います。よろしくお願いします。