带有两个列表参数的函数
我有两个列表,分别叫做 xscat 和 yscat。我想用列表推导式来从 xscat 中取出 x,从 yscat 中取出 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]
你能用列表推导式找到解决方案吗?或者用其他方法,比如 map?
4 个回答
8
我从你的例子中猜测,你想使用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)
这个会生成所有的配对,而
[peaks(x,y) for x in xscat for y in yscat]
如果你想要所有的排列组合,这个应该能给你想要的结果。
另外,使用zip或map的时候要小心——如果xscat和yscat这两个列表的长度不一样,你会得到不同的结果——确保选择一个能给你需要的结果的方式。
11
你需要使用 zip
函数:
[peaks([x,y]) for (x,y) in zip(xscat, yscat)]
44
zip
是你想要的东西:
[peaks([x,y]) for x,y in zip(xscat,yscat)]