web-dev-qa-db-ja.com

2つのリストに引数がある関数

Xscatとyscatの2つのリストがあります。リスト内包表記で、xscatとyscatでそれぞれxとyを取得したいと思います。結果のリストには、peaks([x[0], y[0]]), peaks([x[1], y[1]])などが含まれている必要があります

xscat=yscat=[-1, -1.5,5]
[peaks([x,y]) for x,y in xscat,yscat]

内包表記を使用して解決策を見つけることができますか?またはそれを置く他の方法(地図)?

30
kiriloff

Zipはあなたが望むものです:

[peaks([x,y]) for x,y in Zip(xscat,yscat)]
44
Ned Batchelder

Zipを使用する必要があります:

[peaks([x,y]) for (x,y) in Zip(xscat, yscat)]
11
Matt Fenwick

あなたの例からZip()を使いたいと思いますが、本当にやりたいことがxscatとyscatのすべての可能な組み合わせを繰り返すことである場合に備えて、もっとやるべきことがあります...

したがって、(xscat [0]、yscat [0])、(xscat [0]、yscat [1])、(xscat [0]、yscat [2])などが必要な場合は、最初にネストされた理解:

((x、y)for x in xscat for y in yscat)

すべてのペアを生成し、

[xscatのxのpeaks(x、y)yscatのyの場合]

すべての順列が必要な場合は、解が得られるはずです。

また、Zip/mapに注意してください-リスト(xscatとyscat)が同じ長さでない場合は、結果が異なります-必要なソリューションが得られるものを選択してください。

8
tom stratton

Zipを試してください: http://docs.python.org/library/functions.html#Zip

[peaks(x) for x in Zip(zscat, yscat)]

編集

これは、ピークがタプルを受け入れることができることを前提としています。

3
grieve