Python經常使用的8個高級函數

Python爬蟲、數據分析、網站開發等案例教程視頻免費在線觀看python

https://space.bilibili.com/523606542

lambda

它們在其餘語言中也被稱爲匿名函數。若是你不想在程序中對一個函數使用兩次,你也許會想用lambda表達式,它們和普通的函數徹底同樣。函數

lambda argument: manipulate(argument)網站

lambda 參數:操做(參數)spa

add = lambda x, y: x + y

print(add(3, 5))
# Output: 8
a = [(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 中返回一個新的排序列表。3d

有兩個可選參數,必須將其指定爲關鍵字參數。code

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

reverse 是一個布爾值。若是設置爲 True,那麼列表元素按照每一個比較被顛倒的順序進行排序。對象

內置的 sorted() 函數排序是穩定的。若是確保不會更改比較相等的元素的相對順序,則排序是穩定的 。blog

三元表達式

三元運算符一般在Python裏被稱爲條件表達式,這些表達式基於真(true)/假(false)的條件判斷.排序

它容許用簡單的一行快速判斷,而不是使用複雜的多行if語句。 這在大多數時候很是有用,並且可使代碼簡單可維護。

# 若是條件爲真,返回真 不然返回假
condition_is_true if condition else condition_is_false
if condition:
    result = condition_is_true
else:
    result = condition_is_false

 

map

map(function, iterable, ...)

返回一個將 function 應用於每一個 iterable item 的迭代器,從而產生結果。若是傳遞額外的 iterable 參數,function 必須採用多個參數並應用於並行全部迭代中的項目。使用多個迭代器時,當最短迭代器耗盡時,迭代器中止。

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)

返回一個枚舉對象。 iterable 必須是一個序列,一個迭代器或其餘支持迭代的對象。由 enumerate() 返回的迭代器的 __next__() 方法返回一個元組,該元組包含一個計數(從 start 開始,默認值爲 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)

製做一個迭代器,用於聚合來自每一個迭代器的元素。

返回元組的迭代器,其中第 i 個元組包含來自每一個參數序列或迭代的第 i 個元素。當最短的輸入迭代耗盡時,迭代器中止。使用單個迭代參數,它將返回 1 元組的迭代器。沒有參數,它返回一個空的迭代器。

與 * 操做符一塊兒使用 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 元素構造一個迭代器。iterable 能夠是序列,支持迭代的容器或迭代器。若是 function 爲 None,則假定標識函數爲 false,即爲 false 的全部元素都被刪除。

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

 

reduce

reduce函數的用法和map很相似,也是一個函數f和一個list,可是函數的入口參數必定要是兩個,reduce也是對每一個元素進行反覆調用,最後返回最終的值,而map是返回一個list

python3裏面reduce已經從全局函數裏面移除了,須要用的話要 from functools import reduce

相關文章
相關標籤/搜索