Pythonのお勉強 Part14
■ このスレッドは過去ログ倉庫に格納されています
0093Python初心者
2006/10/21(土) 17:13:312倍早い。map関数を使うとfor文よりは大分早くなる。
それに比べてリスト内包表記の実行スピードは
なんとC言語並みとのことです。(初めてのPythonより)
但し、
>>> res = []
>>> for x in range(5):
... if x % 2 == 0:
... for y in range(5):
... if y % 2 == 1:
... res.append((x, y))
...
>>> res
[(0, 1), (0, 3), (2, 1), (2, 3), (4, 1), (4, 3)]
と書いたのに比べて、
>>> [(x,y) for x in range(5) if x%2 == 0 for y in range(5) if y%2 == 1]
[(0, 1), (0, 3), (2, 1), (2, 3), (4, 1), (4, 3)]
ダブルループなど複雑なもののリスト内包表記は可読性が
著しく落ちるのであまりお奨めできない、とある。
しかし、
[(x,y)
for x in range(5)
if x%2 == 0
for y in range(5)
if y%2 == 1]
[(0, 1), (0, 3), (2, 1), (2, 3), (4, 1), (4, 3)]
[]の中はインデント、改行、自由自在ですから、
返ってfor文よりすっきりしてますよね。
実行速度が早い、分かり易い、かつ短く簡潔である。
リスト内包表記を使わない手は無いと思うが。
どうでしょう?
■ このスレッドは過去ログ倉庫に格納されています