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

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

python - Django 可変数のクエリセットを組み合わせる

不明な数のクエリセットをリストに連結する方法はありますか?

ここに私のモデルがあります:

私が使用しているクエリには、次の 2 種類があります。

  1. items = Item.objects.filter(brands__in=brands)

  2. 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 を使用する方法がわかりません。

それを達成するための最良の方法を知っている人はいますか?

編集: 言い忘れましたが、私が探しているのは、特定のブランドのアイテム、または必要なタグがすべて付いているアイテムです。

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

python - itertoolsを使用して、4つの「for」stmtの複雑さを軽減しますか?

私はリスト4のリストを持っています:

list1_item, list2_item, list3_item, list4_item以下のコードを使用して、すべてのアイテムの組み合わせをシーケンス別に一覧表示できます。

itertoolsモジュール を介してこの仕事をすることができるかどうか教えてもらえますか?

ありがとう

0 投票する
19 に答える
53230 参照

python - 一意の値を持つ順列

itertools.permutations は、その要素が値ではなく位置に基づいて一意として扱われる場所を生成します。したがって、基本的には、次のような重複を避けたいと考えています。

私の場合、順列の量が多すぎるため、後でフィルタリングすることはできません。

これに適したアルゴリズムを知っている人はいますか?

どうもありがとうございました!

編集:

私が基本的に欲しいのは次のとおりです。

sortedリストを作成し、 itertools.product の出力が大きすぎるため、これは不可能です。

申し訳ありませんが、実際の問題を説明する必要がありました。

0 投票する
6 に答える
50078 参照

python - Pythonで一度にN行を読み取る方法

巨大なテキストファイル (数 GB) を一度に N 行取り、そのバッチを処理し、ファイル全体が完了するまで次の N 行に移動するコードを書いています。(最後のバッチが完璧なサイズでなくてもかまいません)。

この操作に itertools islice を使用することについて読んでいます。私は中途半端だと思います:

問題は、次の 16 行のバッチを処理したいのですが、何かが足りないことです。

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

python - itertools.permutation でメモリ エラーを防止する

まず、私は 3 GB の RAM を持っていることに言及したいと思います。

私はノード上で時間的に指数関数的なアルゴリズムに取り組んでいるので、そのためにコードに含まれています

リスト内の頂点のすべての組み合わせを生成すると、順列の1つに取り組むことができます。

ただし、40 個の頂点に対してプログラムを実行すると、メモリ エラーが発生します。

頂点のすべての組み合わせを生成し、このエラーを発生させない実装の簡単な方法はありますか?

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

python - django テンプレートの itertools.groupby

itertools.groupbyクエリセットの要素をグループ化する際に奇妙な問題が発生しています。私はモデルを持っていますResource:

私のsqliteデータベースにはいくつかのリソースがあります:

したがって、タイプ別にグループ化すると、自然に 2 つのタプルが得られます。

今、私は私の見解で同じロジックを持っています:

しかし、テンプレートでこれを繰り返すと、いくつかのリソースが欠落しています。

これは次のようにレンダリングされます。

複数選択

サブイテレータがすでに反復されていると考えていますが、これがどのように発生するかはわかりません。

(python 2.7.1、Django 1.3 を使用)。

(編集: 誰かがこれを読んだら、 を使用する代わりに組み込みのregroupテンプレート タグgroupbyを使用することをお勧めします。)

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

python - 可変インクリメントのスライディングウィンドウ-Python

Pythonのスライディングウィンドウ関数を使用して、非常に長い値のリストを比較しようとしています。スライディングウィンドウ関数で見つけたコードは次のとおりです。

私の質問は、ウィンドウの増分(各タプルが生成された後に移動する量)を1からはるかに大きな整数(たとえば5または50)に変更できるように、このコードをどのように変更するかです。ウィンドウのサイズを変更する方法は知っていますが、増分はわかりません。ありがとう!

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

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)] * kzip

このイディオムで私が目にする主な欠点は、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つの問題が同等の複雑さのように見えても、不要なパディングを取り除くのがいかに難しいか(比較して! )に感銘を受けました。

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

python - itertoolsを使用してオプションのマトリックスを作成する

True値とFalse値の行列を作成しようとしています。これは、指定された数の選択肢のすべての順列を示しています。したがって、5つの選択肢については、次の出力が得られます。

itertoolの順列と組み合わせを使用することを検討してきましたが、これらは位置がずれて機能し、重複をもたらす値ではありません。

この問題には標準的なアルゴリズムがあると確信していますが、その名前を見つけるのに苦労しています。

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

python - itertools はスレッドセーフですか?

たとえば、 を使用してイテレータを作成した場合、chainそれを複数のスレッドで呼び出すことはできますか? GIL に依存するスレッドセーフは許容されますが、好ましくないことに注意してください。

(これは、 C で記述されたイテレーターではなく、ジェネレーターを扱うこの質問とは少し異なることに注意してください)。