內建函式

我們之前談過,Python 中有內建了許多的函式,我們不需要多做其他的動作就能使用,再這裡就讓我們介紹幾個還沒有看過的內建函式吧!

工廠函式

我們生成資料的方式有兩種,一種是透過字面定義,另外一種就是工廠函式了,我們舉個例子:

a = 5
a = int(5)

a = 5 是最常使用的生成方式,簡單的寫出一個字面上的符號 5,就能產生一個整數。而使用內建函式 int,也能夠產出一個整數,不過此例中,看不出 int 的威力,畢竟,寫起來還是麻煩多了。

但是下面的情形,我們就非得使用 int 不可:

string = '100'
a = int(string)

我們使用 int 來進行型態的轉換,最常見的情況便如同上例一樣,我們可以將字串的整數(型態是字串,但內容看起來就是整數)轉成真正的字串,這通常在接受使用者輸入和讀檔時是必要的工具。

int 這類的專門負責轉換型態或是製造資料的函式我們稱之為工廠函式,下表列出一些常見的工廠函式與應用:

內建函式 敘述 例子 結果
int 製造整數或將其他型態資料轉為整數 int('99') 99
float 製造浮點數或將其他型態資料轉為浮點數 float('1.73') 1.73
bool 製造布林值或是將其他型態資料轉為布林值 bool('') False
str 製造字串或是將其他型態資料轉為字串 str(20) '20'
list 製造清單或是將其他型態資料轉為清單 list((1,2,3)) [1,2,3]
set 製造集合或是將其他型態資料轉為集合 list(set([1,1,2,2])) [1,2]

我們會發現 bool 函式可以在非布林語境中得到一個資料的布林值,而 set 可以將清單轉為集合型態,集合中的元素是不能重複的,以下是一個很簡單的方法,讓我們可以將清單中重複的元素過濾掉:

>>> lst = [1, 1, 2, 2, 3]
>>> list(set(lst)) # 轉成 set 濾掉重複的元素再轉回清單
[1, 2, 3]

全部或任何

"對於所有" (for all)"存在一個" (exists) 是邏輯上面很重要的概念,假設我們用一個長度為 5 的清單來記錄班上 1 號到 5 號同學考試有沒有及格,如果該生及格,會標示 True,否則會標示 False:

pass = [True, True, True, False, False]

今天我們想要知道全班是不是都及格了,傳統的作法是:

all_pass = True
for s in pass:
    if s==False:
        all_pass = False
if all_pass:
    print('都及格了,歐啪')
else:
    print('有人不及格')

實在是太麻煩了,Python使用了 all 函式能支援這種運算:

if all(pass):
    print('都及格了,歐啪')
else:
    print('有人不及格')

all 函式可以接受一個清單作為參數,當全部的元素都為真 (或是在布林語境為真),則他的回傳值為真,否則為假。

另一個函式 any 剛好相反,只要有一個人為真,回傳值就是真了:

>>> any(pass)
True

最大與最小

如果讀者有意會到前面的例子,那對於找最大值與最小值,也不會想要用 for 進行查找比對,直接用內建函式吧:

lst = [1,2,3,4,5]
print(max(lst))
print(min(lst))

產生連續的整數

range函式能幫我們產生連續的整數,通常會搭配 for 迴圈來使用:

for num in range(10):
    print(num)

上面的代碼會印出 0 到 9,原因是 range(X) 會產生 0~x-1 的整數序列,透過 for 迭代後印出,我們也可以對產生的範圍作更進一步的控制:

for num in range(2,7):
    print(num)

上面代碼會印出 2~6。

群集的長度

還有一個非常重要的內建函式,那就是 len,此函數可以幫助我們求得一個群集的元素個數:

lst = [1,2,3,4,5]
print(len(lst))
dic = {1:1,2:2,3:4}
print(len(dic))

不論是清單的長度,或是字典的鍵值對個數,都可以用 len 來查到!

其餘的內建函式,讀者可以參考Python官網。

results matching ""

    No results matching ""