問題タブ [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 - Django 可変数のクエリセットを組み合わせる
不明な数のクエリセットをリストに連結する方法はありますか?
ここに私のモデルがあります:
私が使用しているクエリには、次の 2 種類があります。
items = Item.objects.filter(brands__in=brands)
items = Item.objects.filter(tags__name='80s').filter(tags__name='comedy')
2 番目のタイプのクエリに関しては、ユーザーは検索を保存でき (たとえば、「80 年代のコメディ」)、複数の検索を同時に保存できるため、保存した検索ごとにクエリを作成する必要があります。
私は当初、両方のケースを処理する単一のクエリを試して構築したかったのですが ( Django Combining AND and OR Queries with ManyToMany Field を参照)、これを行う最善の方法はすべてのクエリをリストに結合することだと思います。
私は@akaiholaがここで提案していることを気に入っています.Django ビューで2つ以上のクエリセットを組み合わせるには? しかし、可変数のクエリで itertools.chain を使用する方法がわかりません。
それを達成するための最良の方法を知っている人はいますか?
編集: 言い忘れましたが、私が探しているのは、特定のブランドのアイテム、または必要なタグがすべて付いているアイテムです。
python - itertoolsを使用して、4つの「for」stmtの複雑さを軽減しますか?
私はリスト4のリストを持っています:
list1_item, list2_item, list3_item, list4_item
以下のコードを使用して、すべてのアイテムの組み合わせをシーケンス別に一覧表示できます。
itertools
モジュール を介してこの仕事をすることができるかどうか教えてもらえますか?
ありがとう
python - 一意の値を持つ順列
itertools.permutations は、その要素が値ではなく位置に基づいて一意として扱われる場所を生成します。したがって、基本的には、次のような重複を避けたいと考えています。
私の場合、順列の量が多すぎるため、後でフィルタリングすることはできません。
これに適したアルゴリズムを知っている人はいますか?
どうもありがとうございました!
編集:
私が基本的に欲しいのは次のとおりです。
sorted
リストを作成し、 itertools.product の出力が大きすぎるため、これは不可能です。
申し訳ありませんが、実際の問題を説明する必要がありました。
python - Pythonで一度にN行を読み取る方法
巨大なテキストファイル (数 GB) を一度に N 行取り、そのバッチを処理し、ファイル全体が完了するまで次の N 行に移動するコードを書いています。(最後のバッチが完璧なサイズでなくてもかまいません)。
この操作に itertools islice を使用することについて読んでいます。私は中途半端だと思います:
問題は、次の 16 行のバッチを処理したいのですが、何かが足りないことです。
python - itertools.permutation でメモリ エラーを防止する
まず、私は 3 GB の RAM を持っていることに言及したいと思います。
私はノード上で時間的に指数関数的なアルゴリズムに取り組んでいるので、そのためにコードに含まれています
リスト内の頂点のすべての組み合わせを生成すると、順列の1つに取り組むことができます。
ただし、40 個の頂点に対してプログラムを実行すると、メモリ エラーが発生します。
頂点のすべての組み合わせを生成し、このエラーを発生させない実装の簡単な方法はありますか?
python - django テンプレートの itertools.groupby
itertools.groupby
クエリセットの要素をグループ化する際に奇妙な問題が発生しています。私はモデルを持っていますResource
:
私のsqliteデータベースにはいくつかのリソースがあります:
したがって、タイプ別にグループ化すると、自然に 2 つのタプルが得られます。
今、私は私の見解で同じロジックを持っています:
しかし、テンプレートでこれを繰り返すと、いくつかのリソースが欠落しています。
これは次のようにレンダリングされます。
サブイテレータがすでに反復されていると考えていますが、これがどのように発生するかはわかりません。
(python 2.7.1、Django 1.3 を使用)。
(編集: 誰かがこれを読んだら、 を使用する代わりに組み込みのregroup
テンプレート タグgroupby
を使用することをお勧めします。)
python - 可変インクリメントのスライディングウィンドウ-Python
Pythonのスライディングウィンドウ関数を使用して、非常に長い値のリストを比較しようとしています。スライディングウィンドウ関数で見つけたコードは次のとおりです。
私の質問は、ウィンドウの増分(各タプルが生成された後に移動する量)を1からはるかに大きな整数(たとえば5または50)に変更できるように、このコードをどのように変更するかです。ウィンドウのサイズを変更する方法は知っていますが、増分はわかりません。ありがとう!
python - n%k> 0の場合に、n-longリストをk-longチャンクに分割する単純なイディオム?
Pythonでは、nがkの倍数である場合(IOW、 )、 n個の長いリストをkサイズのチャンクに分割するのは簡単です。これが私のお気に入りのアプローチです(ドキュメントから直接):n % k == 0
(トリックは、によって返される、同じイテレータへのk個の参照[iter(x)] * k
のリストを生成することです。次に、イテレータのk個のコピーのそれぞれを1回だけ呼び出すことによって、各チャンクを生成します。「イテレータのリストではなく、イテレータ。)iter(x)
zip
*
[iter(x)] * k
zip
このイディオムで私が目にする主な欠点は、nがkの倍数(IOW、n % k > 0
)でない場合、残りのエントリが省略されることです。例えば:
入力するのが少し長く、上記の場合と同じ結果を生成し、次の場合n % k == 0
により許容可能な動作をする代替イディオムがありn % k > 0
ます。
少なくとも、ここでは残りのエントリは保持されますが、最後のチャンクには。が埋め込まれNone
ます。パディングに別の値が必要な場合はitertools.izip_longest
、問題を解決します。
ただし、目的のソリューションが、最後のチャンクがパディングされないままになっているソリューションであるとします。
この結果を生成するためにイディオムを変更する簡単な方法はありますか?map(None, *[iter(x)]*k)
(確かに、関数を記述してこの問題を解決することは難しくありません(たとえば、リストを均等なサイズのチャンクに分割するにはどうすればよいですか?またはしたがって、この質問のより正確なタイトルは「イディオムをどのように救うか」ですmap(None, *[iter(x)]*k)
が、多くの読者を困惑させると思います。)
私は、リストを均等なサイズのチャンクに分割するのがいかに簡単であるか、そして2つの問題が同等の複雑さのように見えても、不要なパディングを取り除くのがいかに難しいか(比較して! )に感銘を受けました。
python - itertoolsを使用してオプションのマトリックスを作成する
True値とFalse値の行列を作成しようとしています。これは、指定された数の選択肢のすべての順列を示しています。したがって、5つの選択肢については、次の出力が得られます。
itertoolの順列と組み合わせを使用することを検討してきましたが、これらは位置がずれて機能し、重複をもたらす値ではありません。
この問題には標準的なアルゴリズムがあると確信していますが、その名前を見つけるのに苦労しています。