本内容来自: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

求和

拼接