2012-02-07 29 views
30

xscatとyscatという2つのリストがあります。私はxscatとyscatでそれぞれxとyを取り上げるようにリストの理解をしたいと思います。リストを結果として得られる、あなたが内包表記を使用して、任意の解決策を見つけることができpeaks([x[0], y[0]]), peaks([x[1], y[1]])など2つのリストの引数を持つ関数

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

が含まれている必要がありますか?それを置くための他の方法(マップ)?

+0

ピークはタプルを受け入れることができますか? – RussS

答えて

44

zipは何をしたいです:

[peaks([x,y]) for x,y in zip(xscat,yscat)] 
11

あなたはzipを使用する必要があります。

[peaks([x,y]) for (x,y) in zip(xscat, yscat)] 
8

あなたが実際にやりたいことがxscatとyscatのすべての可能な組み合わせに対して繰り返されている場合は、zip()を使用すると仮定します。

(xscat [0]、yscat [0])、(xscat [0]、yscat [1])、(xscat [0]、yscat [2])などが必要な場合は、

はすべてのペアを生成し、(yscatでyについてxscat内の(x、y)はxの)

:ネストされた理解を行いますあなたはすべての順列をしたい場合は、[yscatにおけるyのxscatにおけるxのピーク(x、y)の]

は解が得られるはず。

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