くだすれPython(超初心者用) その36

■ このスレッドは過去ログ倉庫に格納されています
2018/01/01(月) 20:18:42.82ID:iOcRvNll
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。
へび使いが優しくコメントを返しますが、お礼は Python の布教と初心者の救済をお願いします。

エラーを解決したいときはエラー表示や環境(バージョン/IDE or command line)を略さずに書き込んで下さい。
騙りが頻発しています。質問する方は一時的なトリップをつけることを検討して下さい。
次スレは >>985 辺りで

前スレ
くだすれPython(超初心者用) その35
http://mevius.5ch.net/test/read.cgi/tech/1496411341/
VIPQ2_EXTDAT: checked:default:1000:512:----: EXT was configured
2018/02/16(金) 21:20:06.11ID:WNml02Hz
>>409
for i in iterable:
みたいな文は実際にははじめにiter(iterable)が呼ばれて
返ってきたiterator(itとする)に対して
StopIteration例外がraiseされるまでnext(it)を呼び出しその結果をそれぞれiに束縛するという動作をする
なので普段意識しないでもiteratorは使っている

そう考えるとiterable objectとiteratorが一緒でもいいような感じがするし
実際generatorはiterableでありその上iterableでもある
ただiterableとiteratorを分離してクラスの肥大化を防ぐためにそういう仕様になってるんじゃないか
2018/02/16(金) 21:38:25.20ID:WNml02Hz
あとiteratorとiterableを分けることで複数回の反復が可能になるってのがあるな
rangeはiterable objectだけどiteratorではないから
r = range(100)
for i in r:
____print(i)
for i in r:
____print(i)
はできるが
generatorはiterable objectであり自分自身がiteratorだから
g = (i for i in range(100))
for i in g:
____print(i)
for i in g:
____print(i)
は無理
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況