说明
《Python 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
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)
参数有:
此函数专门用于数值,可能会拒绝非数值类型。
内置函数 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
更新时间:July 18, 2023, 10:04 p.m. 标签:python sum 求和 拼接