功能问题

时间:2017-03-22 13:39:07

标签: python function loops python-3.6

所以我有两个清单:

  • 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"))

任何帮助都将受到赞赏,并解释它是如何完成的。

2 个答案:

答案 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)