問題タブ [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 投票する
2 に答える
3064 参照

python - Python で enumerate + itertools.izip を組み合わせる

Pythonで2つのリストを反復+列挙したいと思います。次のコードは見栄えが悪いです。より良い解決策はありますか?

ありがとうございました。

0 投票する
0 に答える
222 参照

python - 反復不可能な型を持つPythonのリストのリストを平坦化しますか?

重複の可能性:
Python でのリストのフラット化 (不規則な) リスト

SOで「リストのリストを平坦化する方法」の質問をかなり見てきましたが、まだ問題に悩まされています。NumPy float64 オブジェクトや整数など、反復不可能な型のリストのリストがあります。私の基本的なデータ構造は次のようになります。

私は次のようにリストを平坦化しようとしています:

このコードはType Error、float64 と整数が反復可能でないことをスローします。反復不可能なデータ型のリストをフラット化するにはどうすればよいですか? 私の望ましい出力は次のとおりです。

助けてくれてありがとう。

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

python - itertools と multiprocessing を組み合わせますか?

256x256x256各要素が行列である Numpy 配列があります。multiprocessingこれらの各行列に対していくつかの計算を行う必要があり、モジュールを使用して速度を上げたいと考えています。

これらの計算の結果は、元の配列の256x256x256要素にある行列の結果を新しい配列[i,j,k]の要素に配置する必要があるため、元の配列と同じように配列に格納する必要があります。[i,j,k]

これを行うには、疑似的な方法で記述できるリストを作成し、[array[i,j,k], (i, j, k)]それを関数に渡して「マルチプロセス」にしたいと考えています。matricesこれが元の配列から抽出されたすべての行列のリストであり、計算を行う関数であると仮定するとmyfunc、コードは次のようになります。

map_asyncただし、実際にはこの巨大なリストを最初に作成しているようですfinput。私のCPUはあまり機能していませんが、メモリとスワップは数秒で完全に消費されます。これは明らかに私が望んでいるものではありません.

最初に明示的に作成する必要なく、この巨大なリストをマルチプロセッシング関数に渡す方法はありますか? または、この問題を解決する別の方法を知っていますか?

本当にありがとう!:-)

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

csv - Python 3.2でcsv(dict)readerオブジェクトをチャンクする方法は?

multiprocessing モジュールの Pool を使用して、大きな csv ファイルの読み取りを高速化しようとしています。このために、(py2kからの)を採用しましたが、csv.dictreaderオブジェクトには長さがないようです。それを繰り返すことしかできないということですか?まだチャンクする方法はありますか?

これらの質問は関連しているように見えましたが、実際には私の質問には答えませんでした: Number of lines in csv.DictReader , How to chunk a list in Python 3?

私のコードはこれをやろうとしました:

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

python - itertoolsのizip_longest:イテレータ内のRasing IndexErrorはどのように機能しますか?

この質問では @ lazyrは、ここizip_longestからのイテレータの次のコードがどのように機能するかを尋ねます。

それがどのように機能するかを理解しようとしていたとき、 「パラメーターとしてIndexError送信されるイテレーターの1つで発生した場合はどうなるか」という質問に遭遇しました。izip_longest

それから私はいくつかのテストコードを書きました:

itertoolsそして、モジュール内の機能とizip_longest_from_docs動作が異なることが判明しました。

上記のコードの出力:

izip_longesしたがって、 fromのコードは例外をitertools伝播しましたがIndexError(私が思うに)、反復を停止するためのシグナルとして例外をizip_longes_from_docs「飲み込んだ」ことがはっきりとわかります。IndexErrorsentinel

私の質問は、モジュールIndexError内のコードでの伝播をどのように回避したかということです。itertools

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

python - itertools.product に余分な状態を追加する

itertools.permutations とその組み合わせを見てみましたが、私の問題ではうまくいかないと思います。

基本的に、定義された長さ (要素の量よりも大きい) の特定の文字列のすべての可能な順列のリストを作成しようとしています。

基本的に、0、1、または気にしない [0,1,'*'] の 3 つの可能な状態が必要です。

私は次のようなことを望んでいました:

ただし、製品は最初のパラメーターで 2 つ以上のパラメーターを好まないようです。

順列または組み合わせをスケールアップしようとすると (つまり、組み合わせの数を超える)、空の配列が返されます。

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

python - Python2.4でitertools.productをエミュレートするPythonの方法

を使用するpython3スクリプトがitertools.productありますが、python2.4のみがインストールされているマシンで実行できる必要があります。itertools.productはPython2.6の新機能であるため、この関数にアクセスできなくなりました。

itertools.productPython 2.4でPythonの方法でエミュレートするにはどうすればよいですか?

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

python - 入力イテレータの最初と最後にプレースホルダをそのまま残すジェネレータ

例としてリストを見てみましょう:

255その中の特別な値です。プレースホルダーです。

リスト内のプレースホルダーの一部を置き換えるジェネレーターを作成しました。期待どおりに動作します。

しかし、最初のプレースホルダー[255, 255と最後のプレースホルダーを処理255, 255, 255]してそのまま生成する必要はありません。

そこで、ジェネレーターを修正して解決しようとしました。

パイソン 2.7

コードの理解を容易にするためだけにリストに変換された中間値:

したがって、ご覧のとおりlist(enumerate(window(it,2)))、先頭の非プレースホルダー値のインデックスが含まれて(0, ((**1**, 1), (4, 1))),いますが、最初のイテレータが持っていた末尾のプレースホルダーの数に関する情報は含まれていません。最後の非プレースホルダーのインデックスのみを持つlist(enumerate(window(it,2)))この値で終わります。(6, ((15, 3), (**19**, 3)))プレースホルダー値。プレースホルダーがいくつ残っているかはわかりません。

it = enumerate(iterable)によって最初に生成された値に保持される初期イテレータ値の位置を生成することに依存して、主要なプレースホルダーを処理することができましたifilterfalse

しかし、末尾のプレースホルダーを使用して同じことを行う方法を見つけるのにかなりの時間を費やしました。問題はifilterfalse、 の最後のプレースホルダー値を飲み込むだけでenumerate(iterable)あり、それらにアクセスする方法がわかりません (最初に生成された の値ifilterfalseに の値のインデックスが含まれていたため、主要なプレースホルダーが可能でしたenumerate(iterable))。

質問

末尾のプレースホルダーを処理するためにこのコードを修正する最良の方法は何ですか?

どうしてもコードを作ることが目的ではないので(の手法で作ったことあります)、完全に書き直すのではなく、コードを少しいじって解決したいと思います。

実際の作業というよりはトレーニングです。

追加情報

windowここからのコードです。

私のコードは、@nye17 によるこの回答とほぼ同じです。しかし、このコードでは、作成者が最初のリストをインプレースで変更しています。そして、そのコードの結果のリストと同じ値を生成するジェネレーターを作成したいと考えています。

さらに、ジェネレーターがリストだけでなく、イテラブルをパラメーターとして受け入れるようにします (たとえば、ファイルから値を 1 つずつ読み取るイテレーターを受け入れる場合があります)。パラメータとしてリストのみを使用すると、リストを最後からスキャンできるため、タスクが簡単になります。

これは、私が人生で解決しなければならない本当の課題ではありません。あくまで研修用です。

完全なコード http://codepad.org/9UJ9comY

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

python - iterablesのリストをitertools関数に渡します

itertools.product関数を使用しています。反復可能なリストである2つの深さのネストされたリストがあります。これを製品関数に渡したいのですが、正しくフォーマットする方法がわかりません。

明確にするために、私はしたい

しかし、このようなnested_list入力から生成されます

しかし、代わりに私は得る

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

python - Pythonでの組み合わせオブジェクトの操作

  1. combObj を反復処理するにはどうすればよいですか?

  2. どうすれば変換できます
    [(1, 2, 3), (1, 2, 4), (1, 3, 4), (2, 3, 4)]

    [[1, 2, 3], [1, 2, 4], [1, 3, 4], [2, 3, 4]]