問題タブ [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.

0 投票する
3 に答える
119 参照

python - 合計にreduce/map/list内包表記を使用するには?

ここに画像の説明を入力 上記の方程式があり、赤で下線が引かれた総和を計算したいのですが、[ρ0,ρ1,ρ2,...,ρN] は最初にリストです。

for ループは確実に問題を解決できます。しかし、もっと簡潔な pythonic スタイルがあるかどうか疑問に思っていました。reduce 関数を試してみましたが、リストの直接和または乗算でしか機能しないようです。上記のような合計に取り組む方法は何ですか?

0 投票する
4 に答える
3803 参照

python - リスト内包表記はPython 3の「リスト(ジェネレーター式)」の構文糖衣ですか?

listPython 3 では、リスト内包表記は関数に供給されるジェネレーター式の単なる構文糖ですか?

たとえば、次のコードです。

実際にバックグラウンドで次のように変換されますか?

私は出力が同一であることを知っており、Python 3 はリスト内包表記が持っていた周囲の名前空間への驚くべき副作用を修正しますが、CPython インタープリターがフードの下で行うことに関して、前者は後者に変換されますか、または何か違いがありますか?コードがどのように実行されるか

バックグラウンド

この質問のコメント セクションでこの同等の主張を見つけました。Google で簡単に検索すると、同じ主張がここで行われていることがわかりました。

What's New in Python 3.0 docsにもこれについての言及がありましたが、言葉遣いはややあいまいです:

また、リスト内包表記には異なるセマンティクスがあることに注意してください。リスト内包表記は、list() コンストラクター内のジェネレーター式のシンタックス シュガーに近く、特にループ制御変数が周囲のスコープに漏れなくなりました。

0 投票する
2 に答える
476 参照

python - 繰り返し変数が使用されていない、よりコンパクトなリスト内包表記

次の命令のように、一定の回数呼び出す必要があるサンプリング関数がいくつかあります。

特に_unused変数を避けることによって、そのステートメントを表現するよりコンパクトな方法があるのだろうか?

0 投票する
1 に答える
109 参照

python - これらのジェネレータ式の動作が異なるのはなぜですか?

これら 2 つのコード フラグメントは、リストの作成方法のみが異なります。1 つは を使用し[]、もう1 つは を使用しlist()ます。

これは iterable を消費し、次に a を発生させStopIterationます:

これはイテラブルを消費し、空のリストを出力して永久にループします。

この行動のルールは何ですか?

0 投票する
1 に答える
16454 参照

python - リスト内包表記とジェネレーター式での yield

次の動作は、私にとってかなり直感に反するようです (Python 3.4):

最後の行の中間値は、実際には常にNoneではなくsend、ジェネレーターに入力したものであり、次のジェネレーターと同等 (推測) です。

これらの 3 つの行がまったく機能するのはおかしいと思います。リファレンスには、yield関数定義でのみ許可されていると書かれています(ただし、間違って読んでいる可能性や、単に古いバージョンからコピーされた可能性があります)。最初の 2 行SyntaxErrorは Python 2.7 で a を生成しますが、3 行目は生成しません。

また、奇妙に思える

  • リスト内包表記はリストではなくジェネレーターを返すこと
  • また、リストに変換されたジェネレータ式と対応するリスト内包表記には異なる値が含まれています。

誰かがより多くの情報を提供できますか?

0 投票する
1 に答える
438 参照

python - このジェネレータ式関数がループ バージョンよりも遅いのはなぜですか?

私は、ジェネレーター式は通常のループよりも効率的である傾向があるという理論に基づいて操作してきました。しかし、次の例に出くわしました。数値Nといくつかの因数を指定して、少なくとも 1 つの因数の倍数であるpsすべての数値の合計を返す関数を作成します。N

ループ バージョンと短いジェネレーター式バージョンを次に示します。

おそらく理解バージョンの方が少し速いかもしれませんが、2つのパフォーマンスはほぼ同じであると期待していましたが、私が期待していなかったのは次のとおりです。

4 倍遅くなるのも間近ではありません。なんで?私は何を誤解していますか?