python | 三個python內(nèi)置函數(shù)
01filterfilter()filter()可以從序列中過濾出符合條件的元素,保存到一個新的序列中參數(shù):? ? 1.函數(shù),根據(jù)該函數(shù)來過濾序列(可迭代的結(jié)構(gòu))
? ? 2.需要過濾的序列(可迭代結(jié)構(gòu))
返回值:
? ? 過濾后的新序列(可迭代的結(jié)構(gòu))
例:
def func(lst):
? ?if lst % 3 == 0:
? ? ? ?return True
? ?return False
res = list(filter(func, lst))
print(res)
輸出結(jié)果:
[3, 6, 9]func是作為參數(shù)傳遞進(jìn) filter()函數(shù)中,filter()調(diào)用完畢后,func就已經(jīng)沒用了
關(guān)于filter()方法, python3和python2有一點不同
Python2.x 中返回的是過濾后的列表, 而 Python3 中返回到是一個 filter 類。
filter 類實現(xiàn)了 __iter__ 和 __next__ 方法, 可以看成是一個迭代器, 有惰性運算的特性, 相對 Python2.x 提升了性能, 可以節(jié)約內(nèi)存。
02mapmap()
map()函數(shù)可以對可迭代對象中做所有元素做指定的操作,然后將其添加到一個新的對象中返回
參數(shù):? ? 1.函數(shù),根據(jù)該函數(shù)來過濾序列(可迭代的結(jié)構(gòu))? ? 2.一個或多個序列
返回值:
? ? 新序列(可迭代的結(jié)構(gòu))
map(function, iterable, ...)
例:
def add(n):
? ?return n + 1
res = list(map(add, lst))
print(res)
輸出結(jié)果:
[2, 3, 4, 5, 6, 7, 8. 9, 10]03zipzip()zip()可以從參數(shù)中的多個迭代器取元素組合成一個新的迭代器參數(shù):? ? 元組、列表、字典等迭代器返回值:
? ? 一個 zip 對象,其內(nèi)部元素為元組
zip([iterable, ...])
例1:
zip()函數(shù)有單個參數(shù)
lst1 = [1, 2, 3, 4, 5]
res1 = zip(lst1)
print(list(res1))
輸出結(jié)果:
[(1,), (2,), (3,), (4,), (5,)]例2:
zip()函數(shù)有兩個參數(shù)
lst1 = [1, 2, 3, 4, 5]
lst2 = ['a', 'b', 'c', 'd', 'e']
res2 = zip(lst1, lst2)
print(list(res2))
輸出結(jié)果:
[(1, 'a'), (2, 'b'), (3, 'c'), (4, 'd'), (5, 'e')]zip 方法在 Python 2 和 Python 3 中的不同:在 Python 3.x 中為了減少內(nèi)存,zip() 返回的是一個對象。如需展示列表,需手動 list() 轉(zhuǎn)換。

