在Python编程中,sum() 函数是一个内置的工具,用于对各种可迭代对象中的数值进行累加。本文将从 sum() 函数的基本语法和参数开始讲解,然后通过详细的示例展示其在列表、字典、集合和元组中的应用。此外,还将了解到错误处理以避免常见陷阱,以及在计算平均值等实际场景中 sum() 的重要性。本指南旨在增强对 sum() 函数的理解和使用,使代码更加高效和易读。
sum() 函数是Python提供的一个强大的内置函数,用于计算可迭代对象中数字的总和。在涉及数据分析和处理的工作中,这个函数经常被使用。让来理解 sum() 函数的语法。
sum() 函数的语法非常简单:
sum(iterable, start)
其中:
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() 函数的例子。
让从一个基本的例子开始,对列表中的数字进行求和。
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