带有两个列表中的参数的函数

时间:2012-02-07 21:47:24

标签: python dictionary list-comprehension

我有两个列表xscat和yscat。我希望列表理解分别在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]

你能找到任何使用理解的解决方案吗?或其他方式(地图)?

4 个答案:

答案 0 :(得分:44)

zip就是你想要的:

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

答案 1 :(得分:11)

您需要使用zip

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

答案 2 :(得分:8)

我从你的例子中假设你想要使用zip(),但是,如果你真正想做的是迭代xscat和yscat的所有可能组合,那么你还有更多工作要做......

所以,如果你想要(xscat [0],yscat [0]),(xscat [0],yscat [1]),(xscat [0],yscat [2])等...你可以首先做一个嵌套的理解:

  

((x,y)表示xscat中的x表示yscat中的y)

将生成所有对和

  

[xscat中x的峰值(x,y),yscat中的y]

如果你想要所有的排列,

应该会产生解决方案。

另外,请注意zip / map - 如果列表(xscat和yscat)的长度不同,你会得到不同的结果 - 确保选择那个产生你需要的解决方案的结果。

答案 3 :(得分:3)

尝试zip:http://docs.python.org/library/functions.html#zip

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

修改

这假设峰值可以接受元组。