對於鍊錶來講,有三個內建函式非常有用: filter()
, map()
, 和 reduce()
。filter(function,
sequence)
返回乙個sequence(序列),包括了給定序列中所有呼叫 function(item)
後返回值為true的元素。(如果可能的話,會返回相同的型別)。如果該 序列 (sequence) 是乙個 string
(字串)或者tuple
(元組),返回值必定是同一型別,否則,它總是 list
。例如,以下程式可以計算部分素數
>>>deff(x
):returnx%
2!=0andx%
3!=0...
>>>
filter(f
,range(2
,25))[5, 7, 11, 13, 17, 19, 23]
map(function,
sequence)
為每乙個元素依次呼叫 function(item)
並將返回值組成乙個鍊錶返回。例如,以下程式計算立方
>>>defcube(x
):returnx*
x*x...
>>>
map(
cube
,range(1
,11))[1, 8, 27, 64, 125, 216, 343, 512, 729, 1000]
可以傳入多個序列,函式也必須要有對應數量的引數,執行時會依次用各序列上對應的元素來呼叫函式(如果某些序列比其它的短,就用 none
來代替)。如果把 none
做為乙個函式傳入,則直接返回引數做為替代。例如
>>>seq=
range(8
)>>>
defadd(x
,y):returnx+
y...
>>>
map(
add,
seq,
seq)
[0, 2, 4, 6, 8, 10, 12, 14]
reduce(func,
sequence)
返回乙個單值,它是這樣構造的:首先以序列的前兩個元素呼叫函式 function ,再以返回值和第三個引數呼叫,依次執行下去。例如,以下程式計算 1 到 10 的整數之和
>>>defadd(x
,y):returnx+
y...
>>>
reduce
(add
,range(1
,11))55
如果序列中只有乙個元素,就返回它,如果序列是空的,就丟擲乙個異常。
可以傳入第三個引數做為初始值。如果序列是空的,就返回初始值,否則函式會先接收初始值和序列的第乙個元素,然後是返回值和下乙個元素,依此類推。例如
>>>defsum
(seq
):...
defadd(x
,y):returnx+
y...
return
reduce
(add
,seq,0
)...
>>>
sum(
range(1
,11))55
>>>
sum()
0
不要像示例中這樣定義 sum()
:因為合計數值是乙個通用的需求,早已有內建的 sum(sequence)
函式,非常好用。
new in version 2.3.
有個方法可以從列表中按給定的索引而不是值來刪除乙個子項: del
語句。它不同於有返回值的 pop()
方法。語句 del
還可以從列表中刪除切片或清空整個列表(我們以前介紹過乙個方法是將空列表賦值給列表的切片)。例如
>>> a=[-1,
1,66.25
,333
,333
,1234.5
]>>>
dela[0
]>>>
a[1, 66.25, 333, 333, 1234.5]
>>>
dela[2
:4]>>>
a[1, 66.25, 1234.5]
>>>
dela
[:]>>>
a
del也可以刪除整個變數
>>>dela
此後再引用命名 a
會引發錯誤(直到另乙個值賦給它為止)。我們在後面的內容中可以看到 del
的其它用法。
c 入門 菜鳥學習日記
c 包含了整個c,c是建立c 的基礎。c 包括c的全部特徵 屬性和優點,同時新增了物件導向程式設計 oop 的完全支援。c 語言包括過程性語言部分和類部分。過程性語言部分與c並無本質的差別,類部分是c中所沒有的,它是物件導向程式設計的主體。物件導向程式設計的本質是把資料和處理資料的過程當成乙個整體 ...
python菜鳥日記5
1.在python中我們可以匯入模組,來呼叫模組裡面的函式,在乙個模組中,我們可以定義很多的函式和變數,但有些函式我們並不希望被別人使用,只希望在模組內部使用,那麼,我們可以通過 下劃線 字首來實現,比如 abc,qiuhe,但是python並沒有強制限制訪問函式或變數,只是一種程式設計的習慣而已 ...
python菜鳥日記6
在函式呼叫的過程中,假設函式裡面有迴圈巢狀的函式,那麼在裡面的函式遇到異常的時候,就終止函式,後面的語句將不會執行,而try後面的語句也將會中止執行,轉而except。異常其實也是乙個類,是乙個物件 此外,如果沒有錯誤發生,可以在except語句塊後面加乙個else,當有錯誤發生時,會自動執行els...