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

kir*_*off 30 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]
Run Code Online (Sandbox Code Playgroud)

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

Ned*_*der 44

zip 是你想要的:

[peaks([x,y]) for x,y in zip(xscat,yscat)]
Run Code Online (Sandbox Code Playgroud)


Mat*_*ick 11

你需要使用zip:

[peaks([x,y]) for (x,y) in zip(xscat, yscat)]
Run Code Online (Sandbox Code Playgroud)


tom*_*ton 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)的长度不同,您将获得不同的结果 - 确保选择产生所需解决方案的结果.