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