所以我有两个清单:
typeList
- 交易类型字符串列表(加法,减法)valueList
- 添加或减去的值列表。因为值和类型都被附加到同一索引的列表中,我需要创建一个函数来计算总增加值和减去总值的总和,但我已经真的坚持了很久我试图了解如何做到这一点。
desiredType
只是正在寻找的事务类型。正如您将看到的,我为每种类型调用了两次函数。
我知道需要在两个列表之间获取和使用索引值,但不确定如何对这些值求和。
def showInfo(typeList, valueList, desiredType):
for i in range(len(valueList)):
if typeList[i] == desiredType:
total = total + valueList[i]
return (total)
调用该函数:
if choice == "I": #Prints transaction information
print (showInfo(transactionTypes,transactionAmounts, "Addition"))
print (showInfo(transactionTypes,transactionAmounts, "Subtraction"))
任何帮助都将受到赞赏,并解释它是如何完成的。
答案 0 :(得分:1)
您可以zip
将这两个列表放在一起,然后您就不必跟踪您正在查看的索引:
def transaction_total(types, amounts, desired_type):
total = 0
for transaction_type, amount in zip(types, amounts):
if transaction_type == desired_type:
total += amount
return total
然而,你真的只是过滤价值并总结它们。 Python使用生成器表达式和sum
函数:
def transaction_total(types, amounts, desired_type):
return sum(amount for transaction_type, amount in zip(types, amounts)
if transaction_type == desired_type)
答案 1 :(得分:0)
如果您需要保持数据不被修改,您可以使您的功能更有效(只需一次通话):
def showInfo(typeList, valueList):
for i in range(len(valueList)):
if typeList[i] == "Addition":
total_add = total_add + valueList[i]
else:
total_sub = total_sub - valueList[i]
return (total_add, total_sub)