Python3.7以內置函數

Python3.7以內置函數

1、map()函數

map()是 Python 內置的高階函數,它接收一個函數 f 和一個 list,並經過把函數 f 依次做用在 list 的每一個元素上,獲得一個新的 list 並返回。python

map(function, iterable, ...) function -- 函數 iterable -- 一個或多個序列函數

Python 2.x 返回列表。code

Python 3.x 返回迭代器。orm

一、當seq只有一個時,將函數func做用於這個seq的每一個元素上,並獲得一個新的seq。

res = map((lambda x: x**2 if x < 3 else x**3), [1, 2, 3, 4, 5])

for i in res:
    print(i)

注:對象

1.map()函數不改變原有的 list,而是返回一個新的 list。ip

2.利用map()函數,能夠把一個 list 轉換爲另外一個 list,只須要傳入轉換函數。內存

例:假設用戶輸入的英文名字不規範,沒有按照首字母大寫,後續字母小寫的規則,請利用map()函數,把一個list(包含若干不規範的英文名字)變成一個包含規範英文名字的list:
輸入:['adam', 'LISA', 'barT']
輸出:['Adam', 'Lisa', 'Bart']it

def format_name(s):
    s1 = s[0:1].upper()+s[1:].lower()
    return s1


res = map(format_name, ['adam', 'LISA', 'barT'])
for i in res:
    print(i)

二、當seq多於一個時,map能夠並行(注意是並行)地對每一個seq執行過程。

l2 = map(lambda x, y: x**y, [1, 2, 3], [1, 2, 3])
for i in l2:
    print(i)
'''
1
4
27
'''
l3 = map(lambda x, y: (x**y, x+y), [1, 2, 3], [1, 2, 3])
for i in l3:
    print(i)
# 打印三個元祖
'''
(1, 2)
(4, 4)
(27, 6)
'''

python3中能夠處理類表長度不一致的狀況,但沒法處理類型不一致的狀況。io

l4 = map(lambda x, y: (x**y, x+y), [1, 2, 3], [1, 2])
for i in l4:
    print(i)
'''
(1, 2)
(4, 4)
'''

2、reduce()函數

用傳給 reduce 中的函數 function(有兩個參數)先對集合中的第 一、2 個元素進行操做,獲得的結果再與第三個數據用 function 函數運算,最後獲得一個結果。即reduce() 函數會對參數序列中元素進行累積。function

reduce(function, iterable[, initializer])

function -- 函數,有兩個參數
iterable -- 可迭代對象
initializer -- 可選,初始參數

可計算列表元素和或階乘。

注:在 Python3 中,reduce() 函數已經被從全局名字空間裏移除了,它如今被放置在 functools 模塊裏,若是想要使用它,則須要經過引入 functools 模塊來調用 reduce() 函數:

from functools import reduce


num = [1, 2, 3, 4, 5]
print(reduce(lambda x, y: x + y, num, 1))
print(reduce(lambda x, y: x * y, num))
# 輸出
'''
16
120
'''

3、filter()函數

該接收兩個參數,第一個爲函數,第二個爲序列,序列的每一個元素做爲參數傳遞給函數進行判,而後返回 True 或 False,最後將返回 True 的元素放到新列表中。

filter(function, iterable)

function -- 判斷函數。
iterable -- 可迭代對象。

Python 2.x 返回列表。

Python 3.x 返回迭代器。

# 過濾出列表中的全部奇數
num = [1, 2, 3, 4, 5]
newlist = filter(lambda x: x % 2 == 1, num)
for i in newlist:
    print(i, end=' ')

# 輸出
'''
1 3 5 
'''

4、all()與any()

any(x)判斷x對象是否爲空對象,若是都爲空、0、false,則返回false,若是不都爲空、0、false,則返回true

all(x)若是all(x)參數x對象的全部元素不爲0、' '、False或者x爲空對象,則返回True,不然返回False

5、zip()函數

zip() 函數用於將可迭代的對象做爲參數,將對象中對應的元素打包成一個個元組,而後返回由這些元組組成的對象,這樣作的好處是節約了很多的內存。

咱們可使用 list() 轉換來輸出列表。

print(list(zip(('a', 'n', 'c'), (1, 2, 3))))
print(list(zip(('a', 'n', 'c'), (1, 2, 3, 4))))
print(list(zip(('a', 'n', 'c', 'd'), (1, 2, 3))))

[('a', 1), ('n', 2), ('c', 3)]
[('a', 1), ('n', 2), ('c', 3)]
[('a', 1), ('n', 2), ('c', 3)]
相關文章
相關標籤/搜索