Python sum() 求和
本内容来自:https://gairuo.com
说明
《Python 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gr99123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
本内容来自:https://gairuo.com
Python 的内置函数 sum() 将一个序列的所有值进行求和并返回,同时如果需要从一个固定值起始计算,可以指定 start 参数。
快速使用
以下是一些使用的案例:
sum([1,2,3]) # 6
sum([1,2,3], 4) # 10
sum([1,2,3], start=1) # 7
sum([]) # 0
sum([], 2) # 2
sum(range(5)) # 10
sum({1: 'a', 2: 'b'}) # 3
sum({'a': 1, 'b': 2}.values()) # 3
sum(([1], [2, 3]), []) # [1, 2, 3]
sum([], ['a']) # ['a']
sum([3.14, float("inf")]) # inf
sum([3 + 2j, 5 + 6j]) # (8+8j)
sum(['a', 'b'])
# TypeError: unsupported operand type(s) for +: 'int' and 'str'
语法
sum() 的语法是:
sum(iterable, /, start=0)
参数有:
iterable:可迭代对象,如:列表、元组、集合,将会对这些数据进行相加或者连接
start:起始值,保底值,从此值开始再加上序列中的所有值,默认为 0。
此函数专门用于数值,可能会拒绝非数值类型。
内置函数 sum 相当于:
def sum(values, start=0):
total = start
for value in values:
total = total + value
return total
即,sum([1,2],[3,4]) 计算过程为 [3,4] + 1 + 2(当然会报错,列表不能和数字连接)。
因此,可以实现将一个二维(二元)列表转为一维列表(一元列表):
sum([[1,2],[3,4]], [])
# [1,2,3,4]
但实际上你不应该那样做,因为那样做会很慢。
功能说明
sum() 的操作逻辑是从 start 开始自左向右对 iterable 的项求和并返回总计值。 iterable 的项通常为数字,而 start 值则不允许为字符串。
对某些用例来说,存在 sum() 的更好替代。 如:
拼接字符串序列的更好更快方式是调用 ''.join(sequence)
要以扩展精度对浮点值求和,请参考 math.fsum()
要拼接一系列可迭代对象,请考虑使用 itertools.chain()
在 3.8 版更改: start 形参可用关键字参数形式来指定。
自定义
class P():
def __init__(self, name, age) -> None:
self.name = name
self.age = age
def __add__(self, other):
return self.age + other.age
def __radd__(self, other):
return other.__add__(self.age)
def __str__(self) -> str:
return f'<{self.name}, {self.age}>'
a = P('tom', 18)
b = P('lily', 19)
print(sum([a, b]))
# 37
参考
https://docs.python.org/3/library/functions.html#sum
https://stackoverflow.com/questions/12202311/python-sum-function-start-parameter-explanation-required
相关内容
Python习题 110:输出大小写字符分别是多少
2023-09-19 19:50:26
Python习题 072:实现1到100之和的计算
2023-09-04 10:26:19
Python 生成和为指定值的随机数字
2022-08-24 18:36:37
< max() 最大元素
Python 内置函数
len() 对象长度 >
更新时间:2023-07-18 22:04:02
标签:python
sum
求和
拼接