(十六)Python學習之內建函式

Foley_Zhao發表於2019-01-26

(十六)Python學習之內建函式

一、三個重要的內建函式
1.map函式
(1)描述:map函式會根據提供的函式對指定序列做對映;
(2)引數說明:map(function, iterable, …)

function:函式
iterable:一個或多個序列

(3)函式說明:function以引數序列中的每一個元素呼叫function函式,返回包含每次function函式返回值的新列表(Python 2.x 返回列表,Python 3.x 返回迭代器);
(4)例項:對列表的資料進行乘方操作;

L = [1, 2, 3, 4, 5]
L1 = map(lambda x: x**2, L)
print(L1)
L2 = list(L1)
print(L2)

在這裡插入圖片描述
2.filter函式
(1)描述:filter函式用於過濾序列,過濾掉不符合條件的元素,返回由符合條件元素組成的新列表;
(2)引數說明:filter(function, iterable)

function:判斷函式
iterable:可迭代物件

(3)函式說明:該接收兩個引數,第一個為函式,第二個為序列,序列的每個元素作為引數傳遞給函式進行判,然後返回 True 或 False,最後將返回 True 的元素放到新列表中(Python 2.x 返回列表,Python 3.x 返回迭代器);
(4)例項:過濾出列表中的所有奇數;

def is_odd(n):
    return n % 2 == 1


L1 = filter(is_odd, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
print(L1)
L2 = list(L1)
print(L2)

在這裡插入圖片描述
3.reduce函式
(1)含義:reduce函式會對引數序列中元素進行累積;
(2)引數說明:reduce(function, iterable[, initializer])

function:函式,有兩個引數
iterable:可迭代物件
initializer:可選,初始引數

(3)函式說明:函式將一個資料集合(連結串列,元組等)中的所有資料進行下列操作:用傳給reduce中的函式function(有兩個引數)先對集合中的第1、2個元素進行操作,得到的結果再與第三個資料用function 函式運算,最後得到一個結果;
(4)例項:對列表的資料進行累加操作;

from functools import reduce

L = [1, 2, 3, 4, 5]
L1 = reduce(lambda x, y: x+y, L)
print(L1)

在這裡插入圖片描述
注意:在Python3中,reduce()函式已經被從全域性名字空間裡移除了,它現在被放置在functools模組裡,如果想要使用它,則需要通過引入functools模組來呼叫reduce()函式;

二、其他內建函式
1.數學運算

abs:求數值的絕對值;
divmod:返回兩個數值的商和餘數;
max:返回可迭代物件的元素中的最大值或者所有引數的最大值;
min:返回可迭代物件的元素中的最小值或者所有引數的最小值;
pow:取兩個值的冪運算值,或取兩個值的冪運算值再與第三個值取模;
round:對浮點數進行四捨五入求值;
sum:對元素型別是數值的可迭代物件中的每個元素求和;

print(abs(-9))
print(divmod(99, 4))
print(max([2, 6, 99, 17]), min([2, 6, 99, 17]))
print(max('aaa', 'b', '233'), min('aaa', 'b', '233'))
print(pow(2, 3), pow(2, 3, 5))
print(round(3.1415))
print(sum([1, 2, 3, 4, 5]))

在這裡插入圖片描述
2.型別轉換

bool:根據傳入的引數的邏輯值建立一個新的布林值;
int:根據傳入的引數建立一個新的整數;
float:根據傳入的引數建立一個新的浮點數;
complex:根據傳入引數建立一個新的複數;

print(complex('1+2j'))
print(complex(1, 2))

在這裡插入圖片描述

str:返回一個物件的字串表現形式;
bytearray:根據傳入的引數建立一個新的位元組陣列;
bytes:根據傳入的引數建立一個新的不可變位元組陣列;
memoryview:根據傳入的引數建立一個新的記憶體檢視物件;
ord:返回Unicode字元對應的整數;
chr:返回整數所對應的Unicode字元;
bin:將整數轉換成2進位制字串;
oct:將整數轉化成8進位制數字符串;
hex:將整數轉換成16進位制字串;
tuple:根據傳入的引數建立一個新的元組;
list:根據傳入的引數建立一個新的列表;
dict:根據傳入的引數建立一個新的字典;
set:根據傳入的引數建立一個新的集合;
frozenset:根據傳入的引數建立一個新的不可變集合;
enumerate:根據可迭代物件建立列舉物件;

seasons = ['Spring', 'Summer', 'Fall', 'Winter']
print(list(enumerate(seasons)))

在這裡插入圖片描述

range:根據傳入的引數建立一個新的range物件;
iter:根據傳入的引數建立一個新的可迭代物件;
slice:根據傳入的引數建立一個新的切片物件;

s = slice(2, 5, None)
L = "abcdefg"
print(L[s])

在這裡插入圖片描述

super:根據傳入的引數建立一個新的子類和父類關係的代理物件;
object:建立一個新的object物件;

3.序列操作

all:判斷可迭代物件的每個元素是否都為True值;
any:判斷可迭代物件的元素是否有為True值的元素;

print(all([1, 2, 3, 4]))
print(all([1, 2, 3, 0]))
print(any([1, 2, 3, 4]))
print(any([0, 0, 0, 0]))

在這裡插入圖片描述

filter:使用指定方法過濾可迭代物件的元素;
map:使用指定方法去作用傳入的每個可迭代物件的元素,生成新的可迭代物件;
next:返回可迭代物件中的下一個元素值;
reversed:反轉序列生成新的可迭代物件;
sorted:對可迭代物件進行排序,返回一個新的列表;
zip:聚合傳入的每個迭代器中相同位置的元素,返回一個新的元組型別迭代器;

L1 = ['b', 'c', 'a', 'd', 'e']
L2 = '12435'
print(L1)
print(L2)
L1 = sorted(L1)
L2 = sorted(L2)
print(L1)
print(L2)
print(list(zip(L2, L1)))

在這裡插入圖片描述
4.物件操作

help:返回物件的幫助資訊;
dir:返回物件或者當前作用域內的屬性列表;
id:返回物件的唯一識別符號;
hash:獲取物件的雜湊值;
type:返回物件的型別,或者根據傳入的引數建立一個新的型別;
len:返回物件的長度;
ascii:返回物件的可列印表字串表現方式;
format:格式化顯示值;
vars:返回當前作用域內的區域性變數和其值組成的字典(有引數),或者返回物件的屬性列表(沒有引數);

5.反射操作

__ import__:動態匯入模組(匯入字串型別的模組名);

index = __import__('hello')
index.sayHello()

在這裡插入圖片描述

isinstance:判斷物件是否是類或者型別元組中任意類元素的例項;
issubclass:判斷類是否是另外一個類或者型別元組中任意類元素的子類;
hasattr:檢查物件是否含有屬性;
getattr:獲取物件的屬性值;
setattr:設定物件的屬性值;
delattr:刪除物件的屬性;
callable:檢測物件是否可被呼叫;

6.變數操作

globals:返回當前作用域內的全域性變數和其值組成的字典;
locals:返回當前作用域內的區域性變數和其值組成的字典;

7.互動操作

print:向標準輸出物件列印輸出;
input:讀取使用者輸入值;

8.檔案操作

open:使用指定的模式和編碼開啟檔案,返回檔案讀寫物件;

9.編譯執行

compile:將字串編譯為程式碼或者AST物件,使之能夠通過exec語句來執行或者eval進行求值;
eval:執行動態表示式求值;先將字串中的資料和資料結構提取出來,再將字串中的數學運算進行一次;

print(eval('1+2+3+4'))

在這裡插入圖片描述
exec:執行動態語句塊;
repr:返回一個物件的字串表現形式(給直譯器);

10.裝飾器

property:標示屬性的裝飾器;
classmethod:標示方法為類方法的裝飾器;
staticmethod:標示方法為靜態方法的裝飾器。

相關文章