溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Python中內(nèi)置函數(shù)有哪些

發(fā)布時(shí)間:2020-08-03 10:08:01 來源:億速云 閱讀:151 作者:清晨 欄目:編程語言

小編給大家分享一下Python中內(nèi)置函數(shù)有哪些,相信大部分人都還不怎么了解,因此分享這篇文章給大家學(xué)習(xí),希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去學(xué)習(xí)方法吧!

1、生成器(Generator):

通過列表生成式,我們可以直接創(chuàng)建一個(gè)列表。但是,受到內(nèi)存限制,列表容量肯定是有限的。而且,創(chuàng)建一個(gè)包含100萬個(gè)元素的列表,不僅占用很大的存儲空間,如果我們僅僅需要訪問前面幾個(gè)元素,那后面絕大多數(shù)元素占用的空間都白白浪費(fèi)了。在Python中,這種一邊循環(huán)一邊計(jì)算的機(jī)制,稱為生成器(Generator)。

如下是一個(gè)簡單的生成器:

>>> L = [x * x for x in range(10)]
 
>>> L
 
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
 
>>> g = (x * x for x in range(10))
 
>>> g
 
<generator object <genexpr> at 0x104feab40>

2、lambda()方法:

lambda表達(dá)式的作用是

(1)python寫一些執(zhí)行代碼是,使用lambda可以省下定義函數(shù)過程;

(2)對于一些比較抽象并且整個(gè)程序執(zhí)行下來只需要調(diào)用一兩次的函數(shù),使用lambda不需要考慮命名的問題;

(3)簡化代碼的可讀性,不用閱讀函數(shù)時(shí)跳到def定義部分。

實(shí)例

>>> s = lambda x:"yes" if x==1 else "no"
>>> s(0)
'no'
>>> s(1)
'yes'
 
>>> g = lambda x : 2 * x +1
>>> g(3)
7
>>> type(g)
<class 'function'>
>>> lambda x : 2 * x +1
<function <lambda> at 0x00000000034F3D08>

3、filter()方法(過濾器):

filter() 函數(shù)用于過濾序列,過濾掉不符合條件的元素,返回由符合條件元素組成的新列表。

該接收兩個(gè)參數(shù),第一個(gè)為函數(shù),第二個(gè)為序列,序列的每個(gè)元素作為參數(shù)傳遞給函數(shù)進(jìn)行判斷,然后返回 True 或 False,最后將返回 True 的元素放到新列表中。

注意: Pyhton2.7 返回列表,Python3.x 返回迭代器對象,可強(qiáng)制轉(zhuǎn)換成list類型

實(shí)例1

def is_odd(n):
    return n % 2 == 1
 
newlist = filter(is_odd, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
print(newlist)
 
輸出結(jié)果 :
[1, 3, 5, 7, 9]

實(shí)例2

python3:
 
a = filter(lambda x: x % 2 == 0, range(10))
print(list(a))
 
輸出
[0, 2, 4, 6, 8]

4、reduce()方法:

reduce() 函數(shù)會對參數(shù)序列中元素進(jìn)行累積。函數(shù)將一個(gè)數(shù)據(jù)集合(鏈表,元組等)中的所有數(shù)據(jù)進(jìn)行下列操作:用傳給 reduce 中的函數(shù) function(有兩個(gè)參數(shù))先對集合中的第 1、2 個(gè)元素進(jìn)行操作,得到的結(jié)果再與第三個(gè)數(shù)據(jù)用 function 函數(shù)運(yùn)算,最后得到一個(gè)結(jié)果。

>>>def add(x, y) :            # 兩數(shù)相加
...     return x + y
... 
>>> reduce(add, [1,2,3,4,5])   # 計(jì)算列表和:1+2+3+4+5
15
>>> reduce(lambda x, y: x+y, [1,2,3,4,5])  # 使用 lambda 匿名函數(shù)
15

在 Python3 中,reduce() 函數(shù)已經(jīng)被從全局名字空間里移除了,它現(xiàn)在被放置在 fucntools 模塊里,如果想要使用它,則需要通過引入 functools 模塊來調(diào)用 reduce() 函數(shù):

from functools import reduce

5、map()方法:

map() 會根據(jù)提供的函數(shù)對指定序列做映射。

第一個(gè)參數(shù) function 以參數(shù)序列中的每一個(gè)元素調(diào)用 function 函數(shù),返回包含每次 function 函數(shù)返回值的新列表。

>>> map(lambda x: x ** 2, [1, 2, 3, 4, 5])  # 使用 lambda 匿名函數(shù)
[1, 4, 9, 16, 25]
 
# 提供了兩個(gè)列表,對相同位置的列表數(shù)據(jù)進(jìn)行相加
>>> map(lambda x, y: x + y, [1, 3, 5, 7, 9], [2, 4, 6, 8, 10])
[3, 7, 11, 15, 19]

如果函數(shù)有多個(gè)參數(shù), 但每個(gè)參數(shù)的序列元素?cái)?shù)量不一樣, 會根據(jù)最少元素的序列進(jìn)行:

>>> listx = [1,2,3,4,5,6,7]       # 7 個(gè)元素
>>> listy = [2,3,4,5,6,7]         # 6 個(gè)元素 
>>> listz = [100,100,100,100]     # 4 個(gè)元素
>>> list_result = map(lambda x,y,z : x**2 + y + z,listx, listy, listz)
>>> print(list(list_result))
[103, 107, 113, 121]

明顯可以看出是由于 lambda 中的 z 參數(shù),實(shí)際是使用了 listz, 而 listz 里面只有 4 個(gè)元素, 所以即使 listx 有 7 個(gè)元素, listy 有 6 個(gè)元素,也不會繼續(xù)執(zhí)行了,只執(zhí)行了 4 個(gè)元素的的計(jì)算。

注意:

Python 2.x 返回列表。

Python 3.x 返回迭代器對象。

以上是Python中內(nèi)置函數(shù)有哪些的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI