sum函數(shù)是Python內(nèi)置的一個(gè)函數(shù),用于對(duì)可迭代對(duì)象中的所有元素進(jìn)行求和操作。它可以接受一個(gè)可迭代對(duì)象作為參數(shù),返回一個(gè)數(shù)字類型的結(jié)果。sum函數(shù)的語(yǔ)法如下:
sum(iterable[, start])
其中,iterable表示可迭代對(duì)象,start表示可選參數(shù),表示起始值,默認(rèn)為0。
使用sum函數(shù)的時(shí)候,需要注意以下幾點(diǎn):
1. 可迭代對(duì)象中的元素必須是數(shù)字類型,否則會(huì)拋出TypeError異常。
2. 如果可迭代對(duì)象為空,sum函數(shù)返回起始值(如果有),否則會(huì)拋出TypeError異常。
3. 如果可迭代對(duì)象中存在NaN(Not a Number)或者Infinity(無(wú)窮大)等特殊值,sum函數(shù)會(huì)返回NaN或者Infinity。
下面我們來(lái)看一些具體的例子。
## 1. 對(duì)列表進(jìn)行求和
我們可以使用sum函數(shù)對(duì)列表中的元素進(jìn)行求和,如下所示:
`python
a = [1, 2, 3, 4, 5]
print(sum(a)) # 15
## 2. 對(duì)元組進(jìn)行求和
除了列表,我們還可以對(duì)元組進(jìn)行求和,如下所示:
`python
a = (1, 2, 3, 4, 5)
print(sum(a)) # 15
## 3. 對(duì)集合進(jìn)行求和
對(duì)于集合,我們也可以使用sum函數(shù)進(jìn)行求和,如下所示:
`python
a = {1, 2, 3, 4, 5}
print(sum(a)) # 15
## 4. 對(duì)字典中的值進(jìn)行求和
如果我們想對(duì)字典中的值進(jìn)行求和,可以使用字典的values方法和sum函數(shù),如下所示:
`python
a = {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}
print(sum(a.values())) # 15
## 5. 指定起始值
如果我們想從一個(gè)非零的起始值開始求和,可以使用sum函數(shù)的第二個(gè)參數(shù)指定起始值,如下所示:
`python
a = [1, 2, 3, 4, 5]
print(sum(a, 10)) # 25
## 6. 使用生成器表達(dá)式
除了常見的可迭代對(duì)象,我們還可以使用生成器表達(dá)式作為sum函數(shù)的參數(shù),如下所示:
`python
a = (x for x in range(1, 6))
print(sum(a)) # 15
## 7. 處理特殊值
當(dāng)可迭代對(duì)象中存在NaN或者Infinity等特殊值的時(shí)候,sum函數(shù)會(huì)返回NaN或者Infinity,如下所示:
`python
a = [1, 2, float('nan'), 4, 5]
print(sum(a)) # nan
a = [1, 2, float('inf'), 4, 5]
print(sum(a)) # inf
在處理這種情況的時(shí)候,我們需要注意。
## 8. 擴(kuò)展問(wèn)答
### 1. sum函數(shù)只能對(duì)數(shù)字類型進(jìn)行求和嗎?
是的,sum函數(shù)只能對(duì)數(shù)字類型進(jìn)行求和。如果可迭代對(duì)象中存在非數(shù)字類型的元素,會(huì)拋出TypeError異常。
### 2. sum函數(shù)的第二個(gè)參數(shù)有什么作用?
sum函數(shù)的第二個(gè)參數(shù)可以指定起始值,默認(rèn)為0。如果我們想從一個(gè)非零的起始值開始求和,可以使用第二個(gè)參數(shù)。
### 3. sum函數(shù)對(duì)于特殊值的處理方式是什么?
當(dāng)可迭代對(duì)象中存在NaN或者Infinity等特殊值的時(shí)候,sum函數(shù)會(huì)返回NaN或者Infinity。
### 4. sum函數(shù)能夠處理的可迭代對(duì)象有哪些?
sum函數(shù)能夠處理的可迭代對(duì)象包括列表、元組、集合、字典的values方法返回的可迭代對(duì)象以及生成器表達(dá)式等。
### 5. sum函數(shù)的返回值是什么類型?
sum函數(shù)的返回值是數(shù)字類型。如果可迭代對(duì)象為空,返回起始值(如果有),否則會(huì)拋出TypeError異常。