Python sum() 函数详解

Python编程中,sum() 函数是一个内置的工具,用于对各种可迭代对象中的数值进行累加。本文将从 sum() 函数的基本语法和参数开始讲解,然后通过详细的示例展示其在列表、字典、集合和元组中的应用。此外,还将了解到错误处理以避免常见陷阱,以及在计算平均值等实际场景中 sum() 的重要性。本指南旨在增强对 sum() 函数的理解和使用,使代码更加高效和易读。

目录

  • 什么是 sum() 函数?
  • 基本用法
  • sum() 函数的使用示例
  • 在列表中求和数字
  • 在字典中求和值
  • 在集合中求和元素
  • 在元组中求和元素
  • 使用 for 循环求和
  • 使用生成器表达式求和
  • 求和列表中列表的元素
  • 高级应用
  • 求和非数值类型
  • 带有条件逻辑的求和
  • 错误处理
  • 实际应用

什么是 sum() 函数?

sum() 函数是Python提供的一个强大的内置函数,用于计算可迭代对象中数字的总和。在涉及数据分析和处理的工作中,这个函数经常被使用。让来理解 sum() 函数的语法。

sum() 函数的语法非常简单:

sum(iterable, start)

其中:

  • iterable:任何包含数值的可迭代对象,如列表、元组、集合、字典等。
  • start:这是一个可选参数,它将指定的值加到可迭代对象值的总和上。如果没有指定,它默认为 0。
sum(a)

计算列表 a 中的总数值,默认初始值为 0。

sum(a, start)

计算列表 a 中数值的总和,并加上 start 值的结果。

基本用法

让从一个基本的例子开始,将对一个数字列表求和,以更好地理解 sum() 函数的工作原理。这个基本例子将以简单的方式展示 sum() 函数的核心功能。

numbers = [1, 2, 3, 4, 5] total = sum(numbers) print(total) # 输出: 15

使用 start 参数:

numbers = [1, 2, 3, 4, 5] total = sum(numbers, 10) print(total) # 输出: 25

sum() 函数的使用示例

现在让探索一些使用 sum() 函数的例子。

让从一个基本的例子开始,对列表中的数字进行求和。

expenses = [200, 150, 50, 300] total_expenses = sum(expenses) print(total_expenses) # 输出: 700

可以使用 values() 方法对字典中的值进行求和。

my_dict = {'x': 21, 'y': 22, 'z': 23} total = sum(my_dict.values()) print(total) # 输出: 66

集合和列表一样,可以直接进行求和。

unique_numbers = {12, 14, 15} total_unique = sum(unique_numbers) print(total_unique) # 输出: 39

元组和列表一样,也可以进行求和。

scores = (90, 85, 88, 92) total_scores = sum(scores) print(total_scores) # 输出: 355

虽然 sum() 函数很方便,但也可以使用 for 循环手动求和。

numbers = [100, 200, 300, 400, 500] # 初始化总和为 0 total = 0 # 遍历列表,将每个数字加到总和中 for num in numbers: total += num print("这些数字的总和是:", total) # 输出: 1500

生成器表达式可以用来求和一系列即时生成的数字:

total = sum(i for i in range(1, 6)) print(total) # 输出: 15

有时,可能有一个列表的列表,并希望求和每个列表中的元素。以下是如何做到这一点:

list_of_lists = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] total = sum(sum(inner_list) for inner_list in list_of_lists) print(total) # 输出: 45

高级应用

让探索一些 sum() 函数的高级应用。

虽然 sum() 主要用于数值类型,但可以结合其他函数使用它来求和非数值类型。例如,求和列表中字符串的长度:

words = ["apple", "banana", "cherry"] total_length = sum(len(word) for word in words) print(total_length) # 输出: 16

可以在生成器表达式中加入条件逻辑,以求和满足特定条件的值:

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] total_even = sum(n for n in numbers if n % 2 == 0) print(total_even) # 输出: 30

错误处理

array1 = ["apple"] try: # 尝试对字符串列表求和 total = sum(array1) except TypeError as e: print(e) # 输出: unsupported operand type(s) for +: 'int' and 'str' class Person: def __init__(self, name, age): self.name = name self.age = age people = [Person("Alice", 30), Person("Bob", 25), Person("Charlie", 35)] # 计算年龄的总和 total_age = sum(person.age for person in people) print(total_age) # 输出: 90 expenses = { 'rent': 1200, 'groceries': 300, 'utilities': 150, 'entertainment': 100 } # 计算总支出 total_expenses = sum(expenses.values()) print(total_expenses) # 输出: 1750 monthly_income = [2500, 2700, 3000, 3200, 2900, 3100, 2800, 2600, 3300, 3500, 3400, 3600] # 计算年收入总和 yearly_income = sum(monthly_income) print(yearly_income) # 输出: 37600
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485