如何在Python中连接N个列表并对列表的N个元素求和?
我目前正在为灌溉建立一个定价模型。 下面的代码给出了单选或多选的价格。 进行选择后,有一个输入,可以在其中指定先前选择的数量 如果提供了两个选项(7,8)和(2,2),则将打印(示例): 我如何使它打印出N个列表+所有N个列表的总和,而不管输入是什么?像这样:如何在Python中连接N个列表并对列表的N个元素求和?,python,Python,我目前正在为灌溉建立一个定价模型。 下面的代码给出了单选或多选的价格。 进行选择后,有一个输入,可以在其中指定先前选择的数量 如果提供了两个选项(7,8)和(2,2),则将打印(示例): 我如何使它打印出N个列表+所有N个列表的总和,而不管输入是什么?像这样: 2 Solenoid [62.5, 175, 237.50] 2 Valve [125, 175, 300.00] Total: [187.5, 350, 537.50] 我尝试使用: def sum_elements(lstlst):
2 Solenoid
[62.5, 175, 237.50]
2 Valve
[125, 175, 300.00]
Total:
[187.5, 350, 537.50]
我尝试使用:
def sum_elements(lstlst):
return [sum(tup) for tup in zip(*lstlst)]
def main(lstlst):
print(*lstlst, sum_elements(lstlst), sep="\n")
使用此代码,我得到float not iterable错误:
return [sum(tup) for tup in zip(*lstlst)]
TypeError: 'float' object is not iterable
我知道我得到这个错误是因为我将lst应用于一个事物列表。
我的问题(我假设)是在应用lst函数之前没有连接N个列表
from itertools import zip_longest
def sum_elements(*lsts):
return [sum(tup) for tup in zip_longest(*lsts, fillvalue=0)]
def main():
l1 = [62.5, 175, 237.50]
l2 = [125.0, 175.0, 300.0]
l3 = [12.0, 165.0, 300.0, 12]
print(sum_elements(l1, l2, l3))
if __name__ == "__main__":
main()
测试:
$ python test.py
[199.5, 515.0, 837.5, 12]
什么是
lstlst
?我相信您上面提供的大部分代码都不是真正相关的。请把你的代码写出来
from itertools import zip_longest
def sum_elements(*lsts):
return [sum(tup) for tup in zip_longest(*lsts, fillvalue=0)]
def main():
l1 = [62.5, 175, 237.50]
l2 = [125.0, 175.0, 300.0]
l3 = [12.0, 165.0, 300.0, 12]
print(sum_elements(l1, l2, l3))
if __name__ == "__main__":
main()
$ python test.py
[199.5, 515.0, 837.5, 12]