問題タブ [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.
python - Pythonで変数「xin」(範囲など)を使用せずにジェネレータ式またはリスト内包表記を作成する
Pythonでは、「x in」変数なしでこのリスト内包表記を書く方法はありますか(完全に未使用のままになっているため)?同じことがジェネレータ式にも当てはまります。これが頻繁に発生することはないと思いますが、私はこれに何度か遭遇し、知りたいと思っていました。
次に例を示します。
(また、これを構築するためのよりエレガントな方法はありますか?)
python - Pythonジェネレータオブジェクトを理解する必要があります
以下では:
any(...)の中にはジェネレーターオブジェクトがあることを理解しています。私が理解していないのは、括弧がないことです-括弧がany()関数に属している場合、ジェネレータ式の周りに別の括弧のセットがあるべきではありませんか?
ありがとう。
python - * parametersは怠惰な呼び出しですか?
次のような関数があるとしましょう。
そして、あなたはそれをそのように呼びます:
要素は遅延して呼び出されますか、それとも関数を実行する前にジェネレーターが数百万の要素すべてを実行しますか?
python - Python ジェネレーター式 if-else
Python を使用して大きなファイルを解析しています。私がやりたいことは
これにはジェネレーター式を使用したいと思います-メモリを節約します。実際のコードを入れています。
python - このリスト内包表記が同等のジェネレーター式よりも速いのはなぜですか?
Windows で Python 3.3.1 64 ビットを使用しており、次のコード スニペットを使用しています。
これと比較して、136ミリ秒で実行されます。
これは 146 ミリ秒で実行されます。この場合、ジェネレーター式はリスト内包表記よりも高速または同じ速度であるべきではありませんか?
Guido van Rossum From List Comprehensions to Generator Expressions から引用します。
... Python 3 のリスト内包表記とジェネレーター式の両方が、実際には Python 2 よりも高速です! (そして、2 つの間に速度の違いはなくなりました。)
編集:
で時間を計測しましたtimeit
。あまり正確ではないことはわかっていますが、ここでは相対速度のみを気にし、さまざまな反復回数でテストすると、リスト内包バージョンの時間が一貫して短くなります。
python - リスト内包表記の短縮
いくつかの機会に、リスト内包表記またはジェネレーター式を短絡するための Python 構文が必要でした。
これは単純なリスト内包表記であり、Python での同等の for ループです。
この言語では、短絡する内包表記はサポートされていません。提案された構文、および Python の同等の for ループ:
無限シーケンスを含む任意のイテラブルで動作し、ジェネレータ式の構文に拡張できる必要があります。私はlist(itertools.takewhile(lambda x: x != 'potato'), my_list)
オプションとして認識していますが、
- それは特にpythonicではありません-しばらく理解するほど読みやすくはありません
- おそらくCPythonの理解ほど効率的でも高速でもありません
- 出力を変換するには追加のステップが必要ですが、それは直接内包することができます。
[x.lower() for x in mylist]
- 原作者でさえあまり好きではないようです。
私の質問は、なぜ文法をこのユースケースに拡張するのが良い考えではないのか、それともPython開発者がめったに役に立たないと考えているためにそれが不可能なのかについて、理論的なしわがありましたか? これは言語への単純な追加であり、便利な機能のように思えますが、隠れた機微や複雑さを見落としている可能性があります。
python - リストを返す関数を呼び出すジェネレータ式
リストを返す関数があり、コンパクト ジェネレーター式 (または適切でコンパクトなもの) を使用してリストで呼び出されたときに、その関数の出力をマージしたいと考えています。
バーが整数である def foo(bar):
場所があり、非常に複雑な計算の後にリストを返すとします。
arr=[9,1,5,1,7,1]
1行のコードの後、うまくいけばどうすれば取得できますか?
arr=[foo(x) for x in arr]
そして、リスト内のリストを[[9,1,5],[1],[7,1]]
ロールアウトするために別の行を書くのは嫌いです。
python - ジェネレーターとリスト内包表記を識別する方法
私はこれを持っています:
私の質問は、この場合、リスト内包表記またはジェネレーターオブジェクトを sum に渡すことですか? どうすればそれを伝えることができますか?これに関する一般的なルールはありますか?
また、 sum 自体には、その引数を囲むために一対の括弧が必要であることを覚えておいてください。上記の括弧は合計用であり、ジェネレーターオブジェクトを作成するためのものではないと思います。同意しませんか?