python-3.x - python3对两个不同大小的列表求和但不重复
问题描述
pay = [1120, 1176, 1232, 1288, 1344, 1400, 1456, 1512, 1568, 1624, 1680, 1736, 1792, 1848, 1904, 1960, 2016, 2072, 2128, 2184, 2240]
rebate = [260.0, 218.0, 176.0, 134.0, 92.0, 50.0, 8.0]
我想把上面的两个列表加起来。由于它们是不同长度的列表,我只想要它在回扣列表结束时它只是继续支付列表。Total 与 pay 的长度相同。
我最接近的是
>>>[x+y for x,y in zip(pay,rebate)]
[1380.0, 1394.0, 1408.0, 1422.0, 1436.0, 1450.0, 1464.0]
>>>[x+y for x,y in zip_longest(pay,rebate)]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 1, in <listcomp>
也试过
total = map(lambda x,y: x+y, pay,rebate)
print(list(total))
[1380.0, 1394.0, 1408.0, 1422.0, 1436.0, 1450.0, 1464.0]
但它强制相同大小的列表。一旦添加回扣完成,我只想留下工资。类似的问题有同样的问题;要么重复较小的列表,要么只返回它们的总和但受最短列表的限制。我想获取完整列表
我可以制作一个常规的 for 循环来构建图表,但我正在寻找一种方法来操作两个单独的列表并将它们的内容相加。也许以某种方式传递默认大小?
解决方案
我认为您只需要以下fillvalue
功能zip_longest
:
[a + b for a, b in zip_longest(pay, rebate, fillvalue=0)]
给予
[1380.0, 1394.0, 1408.0, 1422.0, 1436.0, 1450.0, 1464.0, 1512,
1568, 1624, 1680, 1736, 1792, 1848, 1904, 1960, 2016, 2072,
2128, 2184, 2240]
推荐阅读
- rust - 引用的生命周期如何大于其指向的类型的生命周期?
- python - 使用不同大小的 pandas python 将一个数据帧中的一列与另一列进行比较
- node.js - 在单个 catch 块中捕获多个嵌套的异步函数错误
- node.js - HttpOnly Cookies 未设置为浏览器(laravel 客户端)
- javascript - 在构造函数中求和
- mysql - 是什么导致这个 Heroku mysql 连接错误?(尝试将前端连接到后端 POST 请求)
- python - Python 与 NetMiko。有没有办法在服务器上指定源接口(套接字)?
- javascript - 如何迭代 javascript 对象以使代码更好
- go - 有没有办法从 Clientset 获取 REST 配置?
- arrays - PowerShell 数组中单列的返回值