欢迎访问宙启技术站
智能推送

Python中的sum函数是什么,并如何使用它?

发布时间:2023-06-17 17:20:25

Python中的sum函数是一个内置的函数,用于对序列进行求和。该函数可以接受任何可迭代的序列,包括列表、元组、集合、字典等等。sum函数返回的是所有元素的总和。

使用sum函数非常简单,只需要将需要求和的序列作为参数传递给函数即可,例如:

numbers = [1, 2, 3, 4, 5]
total = sum(numbers)
print(total)

# Output: 15

上面的代码创建了一个包含整数的列表,然后使用sum函数对它进行求和。函数返回的结果是15,这是整个列表中元素的总和。

除了列表,sum函数还可以接受其他类型的序列,例如元组、集合等等。例如:

nums = (1, 2, 3, 4, 5)
total = sum(nums)
print(total)

# Output: 15

s = {1, 2, 3, 4, 5}
total = sum(s)
print(total)

# Output: 15

在这个例子中,我们使用了元组和集合来传递给sum函数进行求和。sum函数可以适用于序列中包含的任何类型,只要元素可以被添加在一起就可以了。

除了基础类型,sum函数也可以用于自定义类型。如果定义了__add__方法,那么实例同样可以用于求和。 例如:

class Money:
    def __init__(self, dollars, cents):
        self.dollars = dollars
        self.cents = cents

    def __add__(self, other):
        total_cents = self.cents + other.cents
        total_dollars = self.dollars + other.dollars
        if total_cents >= 100:
            total_cents -= 100
            total_dollars += 1
        return Money(total_dollars, total_cents)

m1 = Money(10, 50)
m2 = Money(5, 75)
m3 = Money(3, 25)

total = sum([m1, m2, m3])
print(f'Total: ${total.dollars}.{total.cents:02d}')

# Output: Total: $19.50

在这个例子中,我们定义了一个Money类,用于代表美元和美分的金额。我们定义了__add__方法,允许计算两个实例的总和。然后,我们创建了三个Money实例,传递给sum函数进行求和。求和结果是一个新的Money实例,代表了所有输入实例的总和。这个类的使用说明当我们需要对许多货币值进行相加时,我们可以将它们打包成一个列表,然后将它们传递给sum函数以获得它们的总和。

sum函数还有另外几个可选参数,包括start和key。start参数指定了求和的起始值,默认为0;key参数指定了一个函数,用于将序列中的每个元素转换成求和的值。例如,我们可以计算一个列表中所有正数的和:

nums = [1, -2, 3, -4, 5]
total = sum(filter(lambda x: x > 0, nums))
print(total)

# Output: 9

在这个例子中,我们使用了filter函数和lambda表达式来过滤出列表中的所有正数。然后,我们将过滤后的列表传递给sum函数,并设置start参数为0。求和结果是9,这是所有正数的总和。

总的来说,sum函数是一个非常有用的工具,可以方便地计算序列中所有元素的总和。无论您需要计算数字、货币、文本或任何其他类型的序列,sum函数都是一种快速和简单的方法。除了基本类型外,sum函数还可以用于自定义类型,只要这些类型定义了__add__方法。