內建函式
一、zip
zip()是python的乙個內建函式,它接受一系列可迭代的物件作為引數,將物件中對應的元素按順序組合成乙個tuple,zip的作用:壓縮任意多個[0,n]
引數,形成新的復合元組
a, b = [0, 1], [2, 3]ab =zip(a, b)
(list(ab))
#[(0, 2), (1, 3)]
每個tuple中包含的是原有序列中對應序號位置的元素,然後返回由這些tuples組成的list。若傳入引數的長度不等,則返回list的長度和引數中長度最短的物件相同。
a = [1,2,3]b = [4,5,6]
c = [4,5,6,7,8]
zipped =zip(a,b,c)
(list(zipped))
#[(1, 4, 4), (2, 5, 5), (3, 6, 6)]
l1 = ['a','
b','
c','
e','
f','g'
]l2 = [1,2,3]
l3=['
a','
b','c'
]l4=['
牛','
牛','
niu']#
zip,就是把倆list,合併到一起,如果想同時迴圈2個list的時候,
for a,b,c,d in
zip(l1,l2,l3,l4):
(a,b,c,d)
#結果
#a 1 a 牛
#b 2 b 牛
#c 3 c niu
在所有引數長度相同的情況下,zip()與map()類似,沒有引數的情況下zip()返回乙個空list。
a = [1,2,3]b = [4,5,6]
c = [4,5,6,7,8]
zipped =zip(a,b,c)
(list(zipped))
(list(zipped))
#結果:
#[(1, 4, 4), (2, 5, 5), (3, 6, 6)]
#
編寫過示例**之後會發現zip()之後的結果只能「使用一次」。如**示例中所寫,第二次使用list(ab_zip_obj))
輸出ab_zip_obj
的內容是,這是為什麼呢?檢視python3提供zip()的源**,zip()實際上是乙個生成器物件,故使用
list()
獲取zip()結果時,已經相當於是完成一次迭代遍歷,第二次再次使用list()
時迭代已經結束,所以返回。
二、map:
map函式會根據提供的函式對指定序列做對映。
map函式的定義:map(function, sequence[, sequence, ...]) -> list
通過定義可以看到,這個函式的第乙個引數是乙個函式,剩下的引數是乙個或多個序列,返回值是乙個集合。
function可以理解為是乙個一對一或多對一函式,map的作用是以引數序列中的每乙個元素呼叫function函式,返回包含每次function函式返回值的list。
print(list(map(lambda x: x ** 2, [1, 2, 3, 4, 5])))
#返回結果為:
#[1, 4, 9, 16, 25]
defmy(num):
return
str(num)
lis = [1,2,3,4,5,6,7,8,9]
res = list(map(my,lis))#
map引數第乙個是函式名,第二個是要迴圈的內容,返回結果是個map object位址,所以要用list強制轉換下
print(res)#
最終會將lis中的內容迴圈呼叫my函式,res=['1','2','3','4','5','6','7','8','9']
defmy(num1,num2):
return
(num1,num2)
lis = [1,2,3,4,5]
lis1=['
a','
b','
c','d'
]res = list(map(my,lis,lis1))#
map引數第乙個是函式名,剩下的是要迴圈的內容,函式有幾個引數,就要寫入幾個變數,返回結果是個map object位址,所以要用list強制轉換下
print(res)#
最終會將lis和lis1中的內容迴圈呼叫my函式,res=[(1,'a')(2,'b')(3,'c')(4,'d')]
三、filter
filter和map表面上看是一樣的,都是迴圈呼叫函式,區別在於:filter是帶有過濾性的,它會將要迴圈的內容代入函式後,結果為真的對應的內容返回
filter函式的定義:filter(function or none, sequence) -> list, tuple, or string
function是乙個謂詞函式,接受乙個引數,返回布林值true或false。
filter函式會對序列引數sequence中的每個元素呼叫function函式,最後返回的結果包含呼叫結果為true的元素。
返回值的型別和引數sequence的型別相同
defis_even(x):
return x & 1 !=0
print(list(filter(is_even, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10])))
#[1, 3, 5, 7, 9]
defeven(num):
if num%2==0:
return
true
return
false
lis = [1,2,3,4,5,6,7,8,9]
res =filter(even,lis)
print('
filter..
',list(res)) #
filter只保留,返回為真的資料。將lis迴圈滴入even函式後,能夠返回true的lis中的資料,會被列印出來,所以最終結果就是2,4,6,8
#如果改程式用map的話,函式返回什麼就會列印什麼,最終結果是false,true,false,true.....
python重寫內建函式 python 內建函式
說明 zip 函式用於將可迭代的物件作為引數,將物件中對應的元素打包成乙個個元組,然後返回由這些元組組成的列表。如果各個迭代器的元素個數不一致,則返回列表長度與最短的物件相同,利用 號操作符,可以將元組解壓為列表。語法 zip iterable1,iterable2,引數 iterable 乙個或多...
python內建函式簡稱 Python內建函式詳解
此文參考python文件,然後結合自己的理解,寫下來,一方面方便自己,讓自己好好學習,順便回憶回憶 另一方面,讓喜歡的盆友也參考一下。經查詢,3.6版本總共有68個內建函式,主要分類如下 數 算 7個 型別轉換 24個 序列操作 8個 物件操作 9個 反射操作 8個 變數操作 2個 互動操作 2個 ...
python內建函式使用 python內建函式使用
eval函式執行python表示式,有返回值 eval 1 2 3 4 5 exec函式執行的是python語句,沒有返回值 exec print 123 將字串型別的 編碼.物件能夠通過exec語句來執行或者eval 進行求值,c只是編譯,不執行 code for i in range 10 pr...