インターネットからダウンロードしたコードを少し見ていました。基本的なWebクローラー用です。for
私は次のループに出くわしました:
for link in (links.pop(0) for _ in xrange(len(links))):
...
今、私は次のコードも機能すると思います:
for link in links:
....
links=[]
調べてみると、最初のインスタンスがクリアlinks
され、も生成されることがわかりましたgenerator object (genexpr)
。links
ループで使用されることはないfor
ため、長さが短くなることはコードとは関係ありません。
xrangeを使用し、毎回要素をポップする特別な理由はありますか?つまり、標準リストの要素を呼び出すよりもジェネレータオブジェクトを使用することに利点はありますか?さらに、どのような場合にジェネレータが役立つでしょうか。なぜ?