問題タブ [itertools]
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 - 何かの最初の発生を取得するためのより良い方法はありますか?
私はいくつかのものを含むリストを持っています:
述語を満たすリストの最初の項目を取得したいと思いますlen(item) > 2
。itertoolsのdropwhileとnextよりもそれを行うためのより良い方法はありますか?
私は[item for item in lista if len(item)>2][0]
最初に使用しましたが、最初にリスト全体を生成するにはPythonが必要です。
python - 距離計量の組合せ最適化
軌跡に沿った点で構成され、各点に関連付けられた座標を持つ一連の軌跡があります。これらを 3D 配列 (trajectory、point、param) に保存します。これらの軌道の可能なペアごとの組み合わせ間の累積距離が最大になる r 個の軌道のセットを見つけたいと思います。私の最初の試みは、次のようになります。
num_traj は約 500 ~ 1000、r は約 5 ~ 20 になる可能性があるため、これには永遠に時間がかかります。k は任意ですが、通常は最大 50 です。
超賢くしようとして、私は itertools を多用して、すべてを 2 つのネストされたリスト内包表記に入れました。
まったく判読できない (!!!) だけでなく、時間がかかります。誰かがこれを改善する方法を提案できますか?
python - リストのリストの要素に itertools.product を適用する方法は?
配列のリストがあり、配列内の要素のデカルト積を取得したいと考えています。
これをより具体的にするために例を使用します...
itertools.product はそのトリックを行うようですが、私は少し詳細にこだわっています。
私が行った場合
私は得る
でも手に入れたいのは
私はいくつかの異なることを試しました:
彼らは皆、 cp1の代わりにcp0をくれました。
何か案は?
前もって感謝します。
python - 空のリストが提供された場合、itertools.product()は何を生成する必要がありますか?
学術的な質問だと思いますが、2番目の結果は私には意味がありません。最初のように完全に空にすべきではありませんか?この動作の理論的根拠は何ですか?
更新
すべての回答に感謝します-非常に有益です。
ウィキペディアのヌルデカルト積に関する議論は、決定的なステートメントを提供します。
セットなしのデカルト積...は、空のタプルを含むシングルトンセットです。
そして、 sthからの洞察に満ちた答えを処理するために使用できるいくつかのコードがあります:
python - Python には、非遅延バージョンの itertools.groupby がありますか?
itertools.groupby の怠惰は必要ありません。リストを次のようにリストの辞書にグループ化したいだけです。
すでにこれを行う標準機能はありますか?
python - キー値が iterable の要素にあるときに itertools.groupby を使用する方法は?
説明するために、2 タプルのリストから始めます。
収量:
理由を調査するために:
これでも同じ出力が得られます。
次のようなものを取得したい:
これは、キーがリスト内のタプル内にあるためだと考えていますが、実際にはタプルは 1 つとして移動します。目的の出力に到達する方法はありますか? たぶんgroupby()
、このタスクには適していませんか?
python - itertoolsを使用した特殊なタイプの組み合わせ
itertoolsのproduct()関数を最初に簡単に使用するという、誰かが私にくれたタスクはほぼ完了しました。しかし、その人は、次のような少し違うこともするべきだと尋ねました。
li =
[[1、2、3]、
[4、5、6]]
通常のproduct()は、[1、4]、[1、5]、[1、6]、[2、4]、[2、5]、[2、6]、[3、4 ]..。
それがすべきことは次のとおりです。
通常のproduct()を実行してから、リストの最初の要素から次のアイテムを追加します。例の完全なセットは次のようになります。
[[1、4、2]
[1、4、3]、
[1、5、2
]、 [1、5、3]、[2、4、3]
、 [
2、5、3]、
[2 、6、3]]
この状況でitertoolsをどのように使用する必要がありますか?
編集:
プログラムの目的を説明すると役立つ場合があります。たとえば、ユーザーは5行6列の数字のリストを入力します。
通常のproduct()は、5つの数字の組み合わせになります。その人は6つの数字の組み合わせを望んでいます。この「6番目」の数字はどこから来るのでしょうか?それは彼が望む列の彼の選択から来るでしょう。
python - 事前に解凍されたリストを生成するにはどうすればよいですか?
itertools.groupby
操作内で作成されたリストがあります。
たとえば、 と でsubset_of_grp
あることが判明した[1, 2, 3, 4]
場合[5, 6, 7, 8]
:
印刷されます:
さて、関数の定義に戻ります。明らかに、次は構文エラー (*
演算子) です。
同じ print
ループの次の結果が[list]
括弧なしになるようにします。
ここでprint
は説明のみを目的としていることに注意してください。単純化された構造の恩恵を受ける他の機能がありtuple
ます。
python - Python-リストの順列の生成を高速化します(およびDictの順列かどうかをチェックするプロセス)
リストのすべての順列を生成し、それぞれが辞書にあるかどうかを確認するためのより高速な方法が必要です。
それが役立つ場合、リストはすべて文字列のリストになります。['など'、'this'、'one']
私の解決策は機能しますが、非常に遅いです。Pythonの使用をやめる必要があるかもしれませんが、最初に専門家がPythonを実行すると思いました。
最高、ゲイリー
python - 反復可能なオブジェクトをコピーするPythonの方法
私が取り組んでいる小さなプロジェクトでは、リストを循環する必要があります。このサイクルの各要素について、前の要素を新しいサイクルの最初の要素として、同じリストを介して別のサイクルを開始する必要があります。たとえば、次のようなものを作成できるようにしたいと考えています。
各 .next() の後に itertools.cycle をコピーすると、現在の状態が保存されるため、「外側の」サイクルの要素で新しいサイクルを開始できると考えました。または、「サイクルポインターをリセット」して古い位置に戻すこともできます。私は次のことを試しました:
しかし、このエラーが発生しました:
私が望むものを達成するにはさまざまな方法があることは知っていますが、短くて明確でpythonicなコードを探しています。誰かが別のアイデアやスニペットを持っているかもしれませんか? イテレータ オブジェクトをコピーできないという事実が、私の興味をかき立てました。イテラブルのコピーが必要な状況でのベストプラクティスはありますか? それとも、イテラブルをコピーするのはばかげていて、一般的に役に立たないのでしょうか?