[解決済み] Python 3.3でrange()がジェネレータなら、なぜnext()をレンジで呼べないのですか?
2022-11-16 08:49:46
質問
ウェブ上の誤った情報に踊らされているのかもしれませんが、私が何かを誤解している可能性の方が高いと思います。 私がこれまでに学んだことに基づいて、range() はジェネレータであり、ジェネレータはイテレータとして使用できます。 しかし、このコード
myrange = range(10)
print(next(myrange))
はこのようなエラーを出します。
TypeError: 'range' object is not an iterator
私はここで何を見逃しているのでしょうか? 私はこれが0を表示し、次の値に進んで
myrange
. 私はPythonに新しいので、かなり基本的な質問で申し訳ありませんが、私はどこにも良い説明を見つけることができませんでした。
どのように解決するのですか?
range
は、イミュータブルな反復処理可能オブジェクトのクラスです。その反復動作は
list
と比較できます。
next
を直接呼び出すことはできません。
iter
.
だからダメなんだよ。
range
はジェネレータではありません。
なぜ直接反復可能なものにしなかったのだろう?そうですね。
range
には、その方法では不可能ないくつかの便利な特性があります。
- 不変であるため、辞書のキーとして使用することができます。
-
これらは
start
,stop
とstep
属性があります (Python 3.3 以降)。count
とindex
メソッドがあり、それらはin
,len
と__getitem__
の操作を行うことができます。 -
を繰り返し実行することができ、同じ
range
を複数回繰り返すことができます。
>>> myrange = range(1, 21, 2)
>>> myrange.start
1
>>> myrange.step
2
>>> myrange.index(17)
8
>>> myrange.index(18)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: 18 is not in range
>>> it = iter(myrange)
>>> it
<range_iterator object at 0x7f504a9be960>
>>> next(it)
1
>>> next(it)
3
>>> next(it)
5
関連
-
[解決済み] 割り当て後にリストが予期せず変更されました。その理由と防止策を教えてください。
-
[解決済み] Python 3で「1000000000000000 in range(1000000000000001)」はなぜ速いのですか?
-
[解決済み] Pythonの辞書からキーを削除するにはどうしたらいいですか?
-
[解決済み] なぜC++はPythonよりもstdinからの行の読み込みが遅いのですか?
-
[解決済み] Pythonのクラスはなぜオブジェクトを継承するのですか?
-
[解決済み] Pythonスクリプトのプロファイリングはどのように行うのですか?
-
[解決済み] print関数の出力をフラッシュする(pythonの出力をバッファリング解除する)にはどうすればよいですか?
-
[解決済み] Pythonで'Enum'を表現するにはどうしたらいいですか?
-
[解決済み] pandasのDataFrameから空のセルを含む行を削除する
-
[解決済み] Django で全てのリクエストヘッダを取得するにはどうすれば良いですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 小数点以下1桁を取得する[重複]。
-
[解決済み] Pythonのargparseを使った隠し引数の作成
-
[解決済み] 文字列から先頭と末尾のスペースを削除するには?
-
[解決済み] Django 1.7で初期マイグレーションからマイグレートバックする方法は?
-
[解決済み] サブフォルダからのインポートモジュール
-
[解決済み] Pythonでマルチプロセッシングキューを使うには?
-
[解決済み] Cythonのコードを含むPythonパッケージはどのように構成すればよいのでしょうか?
-
[解決済み] Python Logging でログメッセージが2回表示される件
-
[解決済み] Flask でグローバル変数はスレッドセーフか?リクエスト間でデータを共有するには?
-
[解決済み] Pythonの検索パスを他のソースに展開する