找回密码
 会员注册
查看: 30|回复: 0

Python-3.12.0文档解读-内置函数sum()详细说明+记忆策略+常用场景+巧妙用法+综合技巧

[复制链接]

2万

主题

0

回帖

6万

积分

超级版主

积分
65423
发表于 2024-9-4 15:02:59 | 显示全部楼层 |阅读模式
一个认为一切根源都是“自己不够强”的INTJ个人主页:用哲学编程-CSDN博客专栏:每日一题——举一反三Python编程学习Python内置函数Python-3.12.0文档解读目录详细说明sum(iterable,/,start=0)参数:返回值:注意事项:版本变化:示例:记忆策略常用场景使用场景1:求列表中数字的总和使用场景2:求列表中数字的总和,并加上一个起始值使用场景3:求二维列表(矩阵)中所有元素的总和使用场景4:求字典中所有值的总和使用场景5:求一系列生成器表达式的总和巧妙用法使用技巧1:计算布尔值列表中 True 的数量使用技巧2:计算字符串中数字字符的总和使用技巧3:计算嵌套字典中所有数值的总和使用技巧4:计算两个列表中对应元素的和使用技巧5:合并多个字典中的数值综合技巧巧妙用法1:结合 map() 和 sum() 计算平方和巧妙用法2:结合 filter() 和 sum() 计算满足条件的元素的总和巧妙用法3:结合 zip() 和 sum() 计算矩阵对角线元素的和巧妙用法4:结合 itertools.chain() 和 sum() 计算多个列表中所有元素的和巧妙用法5:结合 sorted() 和 sum() 求前N个最小元素的和巧妙用法6:结合 enumerate() 和 sum() 计算加权和详细说明sum(iterable,/,start=0)sum()函数用于从指定的开始值start开始,自左向右对iterable中的项求和,并返回总计值。参数:iterable:需要进行求和的可迭代对象,通常为包含数字的列表、元组等。start(可选):求和的起始值,默认为0。注意,start 值不允许为字符串。返回值:返回iterable中所有项与start值之和。注意事项:对于某些特定的用例,存在比 sum() 更好、更快的替代方法。若需要拼接字符串序列,推荐使用 ''.join(sequence),效率更高。若需要以扩展精度对浮点数进行求和,推荐使用 math.fsum()。若需要拼接一系列可迭代对象,推荐使用 itertools.chain()。版本变化:在Python3.8版中:start 参数可以通过关键字参数的形式来指定。在Python3.12版中:浮点数的加总算法已切换为一种能在大多数构建版本上给出更高精度的算法。示例:#求和示例numbers=[1,2,3,4,5]total=sum(numbers)print(total)#输出15#指定起始值的求和示例total_with_start=sum(numbers,10)print(total_with_start)#输出25#错误示例:start值不允许为字符串try:sum(numbers,'10')exceptTypeErrorase:print(e)#输出TypeError:sum()can'tsumstrings[use''.join(seq)instead]'运行运行记忆策略sum在英语中意为“总和”或“加总”。当你看到sum时,可以立即联想到加法运算或求和。常用场景当然,以下是sum()函数在不同场景中的详细使用示例,每行代码都附有注释:使用场景1:求列表中数字的总和#场景描述:你有一个包含多个数字的列表,想要计算这些数字的总和。#定义一个包含多个数字的列表numbers=[1,2,3,4,5]#使用sum()函数对列表中的数字求和total=sum(numbers)#输出总和print(total)#输出15'运行运行使用场景2:求列表中数字的总和,并加上一个起始值#场景描述:你有一个包含多个数字的列表,想要在计算这些数字的总和时加上一个起始值。#定义一个包含多个数字的列表numbers=[1,2,3,4,5]#指定一个起始值start_value=10#使用sum()函数对列表中的数字求和,并加上起始值total_with_start=sum(numbers,start_value)#输出总和print(total_with_start)#输出25'运行运行使用场景3:求二维列表(矩阵)中所有元素的总和#场景描述:你有一个二维列表(矩阵),想要计算其中所有元素的总和。#定义一个二维列表(矩阵)matrix=[[1,2,3],[4,5,6],[7,8,9]]#使用嵌套的sum()函数对矩阵中的所有元素求和total_matrix_sum=sum(sum(row)forrowinmatrix)#输出总和print(total_matrix_sum)#输出45'运行运行使用场景4:求字典中所有值的总和python复制#场景描述:你有一个包含多个键值对的字典,想要计算所有值的总和。#定义一个字典,键为字符串,值为数字data={'a':1,'b':2,'c':3,'d':4}#使用sum()函数对字典中的所有值求和total_values=sum(data.values())#输出总和print(total_values)#输出10'运行运行使用场景5:求一系列生成器表达式的总和#场景描述:你有一个生成器表达式,想要计算其中所有生成值的总和。#定义一个生成器表达式,用于生成1到10之间的所有数的平方squares_generator=(x**2forxinrange(1,11))#使用sum()函数对生成器表达式产生的所有数值求和total_squares_sum=sum(squares_generator)#输出总和print(total_squares_sum)#输出385'运行运行巧妙用法使用技巧1:计算布尔值列表中 True 的数量布尔值在Python中可以作为整数使用,其中True相当于1,False相当于0。我们可以利用sum()函数来计算列表中True的数量。#定义一个包含布尔值的列表bool_list=[True,False,True,True,False]#使用sum()函数计算列表中True的数量true_count=sum(bool_list)#输出True的数量print(true_count)#输出3'运行运行使用技巧2:计算字符串中数字字符的总和通过sum()函数,我们可以将字符串中的数字字符转化为整数并计算它们的总和。#定义一个包含数字字符的字符串num_str="12345"#使用sum()函数计算字符串中数字字符的总和total=sum(int(char)forcharinnum_str)#输出总和print(total)#输出15'运行运行使用技巧3:计算嵌套字典中所有数值的总和如果有一个嵌套的字典结构,可以使用递归和sum()函数来计算其中所有数值的总和。#定义一个嵌套的字典nested_dict={'a':1,'b':{'c':2,'d':3},'e':{'f':{'g':4,'h':5}}}#定义一个递归函数,用于计算嵌套字典中的所有数值的总和defsum_nested_dict(d):total=0forvalueind.values():ifisinstance(value,dict):total+=sum_nested_dict(value)else:total+=valuereturntotal#调用递归函数并输出总和total_sum=sum_nested_dict(nested_dict)print(total_sum)#输出15'运行运行使用技巧4:计算两个列表中对应元素的和通过zip()和sum()函数,可以计算两个列表中对应元素的和。#定义两个等长的列表list1=[1,2,3]list2=[4,5,6]#使用列表推导式和zip()计算两个列表中对应元素的和sum_list=[sum(pair)forpairinzip(list1,list2)]#输出结果列表print(sum_list)#输出[5,7,9]'运行运行使用技巧5:合并多个字典中的数值通过sum()函数,可以实现多个字典的合并,并计算相同键的数值之和。fromcollectionsimportCounter#定义多个字典dict1={'a':1,'b':2,'c':3}dict2={'a':2,'c':4,'d':1}dict3={'b':3,'c':1,'d':2}#使用Counter和sum()函数合并字典并计算相同键的数值之和total_counter=sum((Counter(d)fordin[dict1,dict2,dict3]),Counter())#输出结果字典print(total_counter)#输出Counter({'c':8,'b':5,'a':3,'d':3})'运行运行这些技巧展示了sum()函数在处理布尔值、字符串、嵌套字典、列表和字典合并等方面的巧妙应用。通过这些特殊的用法,可以在很多场景中简化代码,提高代码的可读性和效率。综合技巧当然,sum()函数可以与其他函数或方法相结合,创造出一些非常巧妙的用法,以下是几个这样的例子:巧妙用法1:结合 map() 和 sum() 计算平方和可以通过map()函数对每个元素进行平方,再用sum()函数计算平方和。#定义一个列表numbers=[1,2,3,4,5]#使用map()和sum()计算列表中所有数字的平方和square_sum=sum(map(lambdax:x**2,numbers))#输出平方和print(square_sum)#输出55'运行运行巧妙用法2:结合 filter() 和 sum() 计算满足条件的元素的总和通过filter()函数筛选满足条件的元素,再用sum()函数求和。#定义一个列表numbers=[1,2,3,4,5,6,7,8,9,10]#使用filter()筛选出偶数,再用sum()计算这些偶数的总和even_sum=sum(filter(lambdax:x%2==0,numbers))#输出偶数的总和print(even_sum)#输出30'运行运行巧妙用法3:结合 zip() 和 sum() 计算矩阵对角线元素的和可以通过zip()函数提取矩阵的对角线元素,再用sum()函数计算它们的和。#定义一个矩阵matrix=[[1,2,3],[4,5,6],[7,8,9]]#使用zip()提取主对角线元素,再用sum()计算它们的总和diagonal_sum=sum(matrix[i][i]foriinrange(len(matrix)))#输出对角线元素的总和print(diagonal_sum)#输出15'运行运行巧妙用法4:结合 itertools.chain() 和 sum() 计算多个列表中所有元素的和可以通过itertools.chain()函数将多个列表连接起来,再用sum()函数计算总和。importitertools#定义多个列表list1=[1,2,3]list2=[4,5]list3=[6,7,8,9]#使用itertools.chain()将多个列表连接起来,再用sum()计算总和total_sum=sum(itertools.chain(list1,list2,list3))#输出总和print(total_sum)#输出45'运行运行巧妙用法5:结合 sorted() 和 sum() 求前N个最小元素的和可以通过sorted()函数对列表进行排序,再用sum()函数计算前N个最小元素的和。#定义一个列表numbers=[10,5,8,3,7,2,1,6,4,9]#指定N的值N=3#使用sorted()对列表进行排序,取前N个最小元素,再用sum()计算它们的总和min_sum=sum(sorted(numbers)[:N])#输出前N个最小元素的总和print(min_sum)#输出6(1+2+3)'运行运行巧妙用法6:结合 enumerate() 和 sum() 计算加权和可以通过enumerate()函数为每个元素添加权重,再用sum()函数计算加权和。#定义一个列表numbers=[1,2,3,4,5]#使用enumerate()为每个元素添加权重(从1开始),再用sum()计算加权和weighted_sum=sum(index*numberforindex,numberinenumerate(numbers,start=1))#输出加权和print(weighted_sum)#输出55(1*1+2*2+3*3+4*4+5*5)'运行运行这些例子展示了如何灵活地结合sum()函数与其他函数或方法,以实现不同的任务。这种组合使用方式不仅能简化代码,还能提高代码的可读性和效率。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2024-12-30 03:18 , Processed in 0.488694 second(s), 26 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表