問題タブ [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 - Python で enumerate + itertools.izip を組み合わせる
Pythonで2つのリストを反復+列挙したいと思います。次のコードは見栄えが悪いです。より良い解決策はありますか?
ありがとうございました。
python - 反復不可能な型を持つPythonのリストのリストを平坦化しますか?
重複の可能性:
Python でのリストのフラット化 (不規則な) リスト
SOで「リストのリストを平坦化する方法」の質問をかなり見てきましたが、まだ問題に悩まされています。NumPy float64 オブジェクトや整数など、反復不可能な型のリストのリストがあります。私の基本的なデータ構造は次のようになります。
私は次のようにリストを平坦化しようとしています:
このコードはType Error
、float64 と整数が反復可能でないことをスローします。反復不可能なデータ型のリストをフラット化するにはどうすればよいですか? 私の望ましい出力は次のとおりです。
助けてくれてありがとう。
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はあまり機能していませんが、メモリとスワップは数秒で完全に消費されます。これは明らかに私が望んでいるものではありません.
最初に明示的に作成する必要なく、この巨大なリストをマルチプロセッシング関数に渡す方法はありますか? または、この問題を解決する別の方法を知っていますか?
本当にありがとう!:-)
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?
私のコードはこれをやろうとしました:
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
「飲み込んだ」ことがはっきりとわかります。IndexError
sentinel
私の質問は、モジュールIndexError
内のコードでの伝播をどのように回避したかということです。itertools
python - itertools.product に余分な状態を追加する
itertools.permutations とその組み合わせを見てみましたが、私の問題ではうまくいかないと思います。
基本的に、定義された長さ (要素の量よりも大きい) の特定の文字列のすべての可能な順列のリストを作成しようとしています。
基本的に、0、1、または気にしない [0,1,'*'] の 3 つの可能な状態が必要です。
私は次のようなことを望んでいました:
ただし、製品は最初のパラメーターで 2 つ以上のパラメーターを好まないようです。
順列または組み合わせをスケールアップしようとすると (つまり、組み合わせの数を超える)、空の配列が返されます。
python - Python2.4でitertools.productをエミュレートするPythonの方法
を使用するpython3スクリプトがitertools.product
ありますが、python2.4のみがインストールされているマシンで実行できる必要があります。itertools.product
はPython2.6の新機能であるため、この関数にアクセスできなくなりました。
itertools.product
Python 2.4でPythonの方法でエミュレートするにはどうすればよいですか?
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
python - iterablesのリストをitertools関数に渡します
itertools.product関数を使用しています。反復可能なリストである2つの深さのネストされたリストがあります。これを製品関数に渡したいのですが、正しくフォーマットする方法がわかりません。
明確にするために、私はしたい
しかし、このようなnested_list入力から生成されます
しかし、代わりに私は得る
python - Pythonでの組み合わせオブジェクトの操作
combObj を反復処理するにはどうすればよいですか?
どうすれば変換できます
[(1, 2, 3), (1, 2, 4), (1, 3, 4), (2, 3, 4)]
か
[[1, 2, 3], [1, 2, 4], [1, 3, 4], [2, 3, 4]]