問題タブ [generator-expression]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
arrays - numpy 配列でリスト内包表記を使用して、numpy 配列内に単一のジェネレーター式を生成しようとしています。なんで?
だから私はラズベリーパイに展開されるコードを書いています。ラズベリー pi の計算上の制限と、この特定の用途 (画像のキャプチャと処理) に必要な一連の手順のため、可能な限り for ループの代わりにリスト内包表記を使用するのが最善であると考えました。ファイル(名前+パス)の配列を作成するステートメントを作成できました。
self.dark_file_names=np.array([(os.path.join(self.dark_frames_path, line.strip("\n")) for root, dirs, files in os.walk(self.dark_frames_path) for line in files if) line.endswith(".npy\n"))])
ただし、ipythonでこれのバリエーションを試しました:
dark_file_names=np.array([(os.path.join(dark_frames_path, line.strip("\n"))) ルート、ディレクトリ、os.walk(dark_frames_path) 内のファイルの場合、line.endswith(". py\n"))])
これが出力です:
dark_frames_path は、大量の python ファイルを含むローカル ディレクトリです。
残念ながら、これは私が望んでいたものではありません。同様の結果で、通常のリストでも試しました。私のステートメントをリスト内包表記ではなくジェネレーター式として解釈するのはなぜですか?
また、ipythonでこれらのコマンドを使用してsshを介して実行していたときに、これが機能していました。
ssh は paramiko.SSHClient() インスタンスです。
python - 別の関数からジェネレーターを返す方法
別の関数から呼び出して、取得したジェネレーターを返したいジェネレーター関数があります。ここで2つのアプローチを見ることができます-
以下の関数は、目的を説明するための単純なダミー関数であることに注意してください。これらの機能自体を実装するためのより良い方法を考え出さないでください。
方法 1取得するように使用list(list(fun_b(10))[0])
します[10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
その後list(fun_b(10))
、私を与えることができます[10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
。
方法 1 は問題ないように見えますが、リストのリストを返したくありません。それ以外の場合はリストを返し、コードを台無しにしたくないからです。方法 2 は非効率的です。
この状況に対処するための本当に良いアプローチは何でしょうか?