暇つぶし2chat TECH - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト612:デフォルトの名無しさん 20/08/13 12:48:37 BKihMO2y.net foo = [1,2,3] foo_iter = iter(foo) next(foo_iter) #=> 1 next(foo_iter) #=> 2 next(foo_iter) #=> 3 next(foo_iter) #=> StopIteration イテレータはnext()が呼ばれたら次の要素を1つ返すオブジェクト 内部でどこまで返したか覚えておく必要があるので状態を記録してるかというと記録してる for x in foo: って書けば iter(foo)して、next()を呼んで、得られた値をxに代入して、loop内の処理へ渡してる ジェネレータは一般的には呼ばれたら1つ1つ値を生成して返す関数でイテレータの一種 ジェネレータではないイテレータは1つ1つ値を生成するんじゃなく すでに用意されたリストなどから順に値を1つずつ返すもの なので作り置きから注文の都度1つずつ返すのもイテレータ 613:デフォルトの名無しさん 20/08/13 13:00:42.76 0rwjVY3B.net 何故pathで取得したパスは、iterdirなどを使ってジェネレータにする必要があるんでしょうか? ササッとリストでも取得してくれればいいんじゃないですか? フォルダのファイル一覧を取得する場合、 パス→ジェネレータ生成→リスト化という手順を踏まないといけないみたいです パス→リスト でいいような、、 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch