對於列表來講,有三個內建函式非常有用: filter(),map() 以及 reduce()。
filter(function, sequence)
返回乙個sequence
(序列),包括了給定序列中所有呼叫function(item)
後返回值為true
的元素(如果可能的話,會返回相同的型別)。如果該 序列 (sequence
)是乙個str
,unicode
或者tuple
,返回值必定是同一型別,否則,它總是list
。例如,以下程式可以計算乙個被 3 或者 5 整除的序列:
>>
>
deff
(x):
return x %3==
0or x %5==
0...
>>
>
filter
(f,range(2
,25))
[3,5
,6,9
,10,12
,15,18
,20,21
,24]
這個方法是用於過濾序列的,即其會過濾傳入的第二個引數,將其中不符合函式f
的丟掉,剩下的組成乙個新的list並返回;
map(function, sequence)
為每乙個元素依次呼叫 function(item) 並將返回值組成乙個鍊錶返回,這個和filter
不同之處在於,filter
是過濾,而map
方法是計算,將引數sequence
裡的每乙個元素作為引數傳入fuction
中,並將fuction
返回的結果組成乙個list並返回,範例如下:
>>
>
defcube
(x):
return x*x*x..
.>>
>
map(cube,
range(1
,11))
[1,8
,27,64
,125
,216
,343
,512
,729
,1000
]
這裡可以有多個序列傳入,即如果fuction
有多個引數要傳的話,是需要傳遞多個sequence
的,例如:
>>
> seq =
range(8
)>>
>
defadd
(x, y)
:return x+y..
.>>
>
map(add, seq, seq)[0
,2,4
,6,8
,10,12
,14]
reduce(function, sequence)
返回乙個單值,它是這樣構造的:首先以序列的前兩個元素呼叫函式function
,再以返回值和第三個引數呼叫,依次執行下去。
這個方法和map
方法有相似的地方在於都是將sequence
作為引數傳入fuction
;
例如,以下程式計算 1 到 10 的整數之和:
>>
>
defadd
(x,y)
:return x+y..
.>>
>
reduce
(add,
range(1
,11))
55
如果序列中只有乙個元素,就返回它,如果序列是空的,就丟擲乙個異常。
可以傳入第三個引數作為初始值。如果序列是空的,就返回初始值,否則函式會先接收初始值和序列的第乙個元素,然後是返回值和下乙個元素,依此類推。例如:
>>
>
defsum
(seq):.
..defadd
(x,y)
:return x+y..
.return
reduce
(add, seq,0)
...>>
>
sum(
range(1
,11))
55>>
>
sum(
)0
Python 列表 學習筆記
序列是python中基本資料結構。序列中每個元素都分配到乙個數字 它的位置或索引值 第一位索引值是0,第二位是1,以此類推。python有6個序列的內建型別,但最常見的是列表和元組。序列都可以進行的操作包括索引,切片,加,乘,檢查成員。此外,python已經內建確定序列的長度以及確定最大和最小的元素...
Python學習筆記 列表
今天學習了head first python 中文版 這本書的第1章 人人都愛列表,很有意思。好,為了珍惜時間,下邊開始乾巴巴的筆記 1.檢視python版本 1 python v 大寫 檢視python2版本 2 python3 v 3 python3 v 使用小寫v會進入python直譯器,py...
python學習筆記 列表
1 列表 words hello world print words 0 print words 1 print words 2 大多數情況下,列表中的最後一項不會帶逗號。然而,在那裡放置乙個是完全有效的,在某些情況下是鼓勵的。2 列表也可以巢狀在其他列表中。things string 0,1,2,...