日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

Python常用的8個(gè)高級(jí)函數(shù)

 小仙女本仙人 2021-04-27

lambda

它們?cè)谄渌Z(yǔ)言中也被稱為匿名函數(shù)。如果你不想在程序中對(duì)一個(gè)函數(shù)使用兩次,你也許會(huì)想用lambda表達(dá)式,它們和普通的函數(shù)完全一樣。

lambda argument: manipulate(argument)

lambda 參數(shù):操作(參數(shù))

add = lambda x, y: x + yprint(add(3, 5))# Output: 8a = [(1, 2), (4, 1), (9, 10), (13, -3)]def f(x):return x[1]# a.sort(key=f)a.sort(key=lambda x: x[1])print(a)# Output: [(13, -3), (4, 1), (1, 2), (9, 10)]

sorted

sorted(iterable, *, key=None, reverse=False)

從 iterable 中的 item 中返回一個(gè)新的排序列表。

有兩個(gè)可選參數(shù),必須將其指定為關(guān)鍵字參數(shù)。

key 指定一個(gè)帶有一個(gè)參數(shù)的函數(shù),用于從每個(gè)列表元素中提取比較鍵:key=str.lower。默認(rèn)值是 None(直接比較元素)。

reverse 是一個(gè)布爾值。如果設(shè)置為 True,那么列表元素按照每個(gè)比較被顛倒的順序進(jìn)行排序。

內(nèi)置的 sorted() 函數(shù)排序是穩(wěn)定的。如果確保不會(huì)更改比較相等的元素的相對(duì)順序,則排序是穩(wěn)定的 。

三元表達(dá)式

三元運(yùn)算符通常在Python里被稱為條件表達(dá)式,這些表達(dá)式基于真(true)/假(false)的條件判斷.

它允許用簡(jiǎn)單的一行快速判斷,而不是使用復(fù)雜的多行if語(yǔ)句。 這在大多數(shù)時(shí)候非常有用,而且可以使代碼簡(jiǎn)單可維護(hù)。

# 如果條件為真,返回真 否則返回假condition_is_true if condition else condition_is_falseif condition:
    result = condition_is_trueelse:
    result = condition_is_false

map

map(function, iterable, ...)

返回一個(gè)將 function 應(yīng)用于每個(gè) iterable item 的迭代器,從而產(chǎn)生結(jié)果。如果傳遞額外的 iterable 參數(shù),function 必須采用多個(gè)參數(shù)并應(yīng)用于并行所有迭代中的項(xiàng)目。使用多個(gè)迭代器時(shí),當(dāng)最短迭代器耗盡時(shí),迭代器停止。

In [54]: list1 = [1, 2, 3, 4, 5, 6]

In [55]: list2 = [4, 3, 7, 1, 9]

In [56]: list(map(str, list1))
Out[56]: ['1', '2', '3', '4', '5', '6']

In [57]: list(map(lambda x, y: x+y, list1, list2))
Out[57]: [5, 5, 10, 5, 14]

enumerate

enumerate( iterable, start=0)

返回一個(gè)枚舉對(duì)象。 iterable 必須是一個(gè)序列,一個(gè)迭代器或其他支持迭代的對(duì)象。由 enumerate() 返回的迭代器的 __next__() 方法返回一個(gè)元組,該元組包含一個(gè)計(jì)數(shù)(從 start 開(kāi)始,默認(rèn)值為 0)以及遍歷迭代獲得的值。

>>> seasons = ['Spring', 'Summer', 'Fall', 'Winter']>>> list(enumerate(seasons))
[(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]>>> list(enumerate(seasons, start=1))
[(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]

zip

zip(*iterables)

制作一個(gè)迭代器,用于聚合來(lái)自每個(gè)迭代器的元素。

返回元組的迭代器,其中第 i 個(gè)元組包含來(lái)自每個(gè)參數(shù)序列或迭代的第 i 個(gè)元素。當(dāng)最短的輸入迭代耗盡時(shí),迭代器停止。使用單個(gè)迭代參數(shù),它將返回 1 元組的迭代器。沒(méi)有參數(shù),它返回一個(gè)空的迭代器。

與 * 操作符一起使用 zip() 可用于解壓縮列表:

>>> x = [1, 2, 3]>>> y = [4, 5, 6]>>> zipped = zip(x, y)>>> list(zipped)
[(1, 4), (2, 5), (3, 6)]>>> x2, y2 = zip(*zip(x, y))>>> x == list(x2) and y == list(y2)
True
data = zip(list1, list2)
data = sorted(data)
list1, list2 = map(lambda t: list(t), zip(*data))

filter

filter(function, iterable)

用那些 function 返回 true 的 iterable 元素構(gòu)造一個(gè)迭代器。iterable 可以是序列,支持迭代的容器或迭代器。如果 function 為 None,則假定標(biāo)識(shí)函數(shù)為 false,即為 false 的所有元素都被刪除。

# 過(guò)濾0-10之間的偶數(shù)In [8]: list(filter(lambda x: x%2==0, range(10)))
Out[8]: [0, 2, 4, 6, 8]

reduce

reduce函數(shù)的用法和map很類似,也是一個(gè)函數(shù)f和一個(gè)list,但是函數(shù)的入口參數(shù)一定要是兩個(gè),reduce也是對(duì)每個(gè)元素進(jìn)行反復(fù)調(diào)用,最后返回最終的值,而map是返回一個(gè)list

python3里面reduce已經(jīng)從全局函數(shù)里面移除了,需要用的話要 from functools import reduce

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多