鉄は熱いうちに打て
=============================

Effective Pythonで学ぶ(項目7〜)

2017-12-03

昨日までのあらすじ

Effective Python を真面目に読もうと思ったので読みはじめました。

1章  Python流思考(Pythonic Thinking)

項目 7:mapやfilterの代わりにリスト内包表記を使う

項目 8:リスト内包表記には、 3つ以上の式を避ける

内包表記をはじめてみたときはなんじゃこりゃ?と思いましたが、慣れると便利ですね。

内包表記

ネストがあまり長くなったり、結果が大きい場合は気をつけようねって書いてありました。

項目 9:大きな内包表記にはジェネレータ式を考える

ジェネレータ式 って便利ですね。

内包表記と同じように書くのを括弧で囲むそうです。便利だ

>>> greetings = ['Good Morning', 'Hello', 'Good Night']
>>> it = (len(x) for x in greetings)
>>> next(it)
12
>>> next(it)
5
>>> next(it)
10
>>> next(it)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
StopIteration
>>>

項目 10:rangeよりは enumerateにする

これ、Pythonをはじめた頃に指摘されました。

for i in range(100):
    print(i, some_list[i])

じゃなくて、こう書く!

for i, val in enumerate(some_list):
    print(i, val)

当時、もうちょっと、 enumerate の綴りが短いといいのにな(´・ω・`)とは思いましたけどね。

項目 11:イテレータを並列に処理するには zipを使う

項目 12:forとwhileループの後の elseブロックは使うのを避ける

使わないというか、あまり有名じゃないと思っているのは私だけでしょうか。

for val in some_list:
    なんか処理
else:
    # brakeとかでfor文を終わらずに最後まで来たら実行

項目 13:try/except/else/finallyの各ブロックを活用する

はい!