[解決済み] len(generator())の方法 [重複している]
質問
Pythonジェネレータ
はとても便利です。リストを返す関数よりも利点があります。しかし
len(list_returning_function())
. という方法はないのでしょうか?
len(generator_function())
?
UPDATE
もちろん
len(list(generator_function()))
はうまくいくのですが......。
私が作成したジェネレータを、新しく作成するジェネレータの内部で使用しようとしています。新しいジェネレーターの計算の一部として、古いジェネレーターの長さを知っておく必要があります。しかし、私は、ジェネレータとして同じプロパティを持つ両者を一緒に保持したいと思います。
非常に
が長い。
UPDATE 2:
ジェネレータを想定
は知っている
は、最初のステップからターゲットの長さがわかっています。また、このままでは
len()
の構文があります。例:Pythonの関数がオブジェクトなら、このオブジェクトの変数に長さを代入して、新しいジェネレータからアクセスできるようにできないでしょうか?
どのように解決するのですか?
ジェネレーターは長さを持たない。結局のところ、コレクションではない。
ジェネレータは 内部状態を持つ関数 (そして派手な構文)。繰り返し呼び出して一連の値を得ることができるので、ループ内で使用することができます。しかし、ジェネレータには要素がないので、ジェネレータの長さを求めるのは、関数の長さを求めるのと同じです。
<ブロッククオートPythonの関数がオブジェクトなら、その長さは このオブジェクトの変数には、新しいジェネレータからアクセスできるのでしょうか?
関数はオブジェクトですが、新しい属性を割り当てることはできません。その理由は、このような基本的なオブジェクトをできるだけ効率的に維持するためでしょう。
しかし、単純に
(generator, length)
のペアを関数から取得したり、ジェネレータをこのような単純なオブジェクトでラップしたりします。
class GeneratorLen(object):
def __init__(self, gen, length):
self.gen = gen
self.length = length
def __len__(self):
return self.length
def __iter__(self):
return self.gen
g = some_generator()
h = GeneratorLen(g, 1)
print len(h), list(h)
関連
-
Pythonコンテナのための組み込み汎用関数操作
-
python string splicing.join()とsplitting.split()の説明
-
[解決済み] 'int'オブジェクトに'__getitem__'属性がない。
-
[解決済み] プログラムの実行やシステムコマンドの呼び出しはどのように行うのですか?
-
[解決済み] リストのリストからフラットなリストを作るには?
-
[解決済み] Pythonで現在時刻を取得する方法
-
[解決済み] リストが空かどうかを確認するにはどうすればよいですか?
-
[解決済み] 最小限の驚き」と「変更可能なデフォルトの引数
-
[解決済み】ネストされたディレクトリを安全に作成するには?
-
[解決済み】2つの辞書を1つの式でマージする(辞書の和をとる)には?)
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
PythonはWordの読み書きの変更操作を実装している
-
PyQt5はユーザーログインGUIインターフェースとログイン後のジャンプを実装しています。
-
Pythonの画像ファイル処理用ライブラリ「Pillow」(グラフィックの詳細)
-
[解決済み】TypeError: unhashable type: 'numpy.ndarray'.
-
[解決済み】お使いのCPUは、このTensorFlowバイナリが使用するようにコンパイルされていない命令をサポートしています。AVX AVX2
-
[解決済み】ImportError: sklearn.cross_validation という名前のモジュールがない。
-
[解決済み】IndexError: invalid index to scalar variableを修正する方法
-
[解決済み】ValueError: pickleプロトコルがサポートされていません。3、python2 pickleはpython3 pickleでダンプしたファイルを読み込むことができない?
-
[解決済み】Flaskのテンプレートが見つからない【重複あり
-
[解決済み] ジェネレーター出力の長さ[duplicate]。