新聞中心

成都創(chuàng)新互聯(lián)公司是一家專業(yè)提供崇禮企業(yè)網(wǎng)站建設(shè),專注與成都網(wǎng)站制作、做網(wǎng)站、成都h5網(wǎng)站建設(shè)、小程序制作等業(yè)務(wù)。10年已為崇禮眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站制作公司優(yōu)惠進(jìn)行中。
1、生成器(Generator):
通過列表生成式,我們可以直接創(chuàng)建一個(gè)列表。但是,受到內(nèi)存限制,列表容量肯定是有限的。而且,創(chuàng)建一個(gè)包含100萬個(gè)元素的列表,不僅占用很大的存儲(chǔ)空間,如果我們僅僅需要訪問前面幾個(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)) >>> gat 0x104feab40>
2、lambda()方法:
lambda表達(dá)式的作用是
(1)python寫一些執(zhí)行代碼是,使用lambda可以省下定義函數(shù)過程;
(2)對(duì)于一些比較抽象并且整個(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)>>> lambda x : 2 * x +1 at 0x00000000034F3D08>
3、filter()方法(過濾器):
filter() 函數(shù)用于過濾序列,過濾掉不符合條件的元素,返回由符合條件元素組成的新列表。
該接收兩個(gè)參數(shù),第一個(gè)為函數(shù),第二個(gè)為序列,序列的每個(gè)元素作為參數(shù)傳遞給函數(shù)進(jìn)行判斷,然后返回 True 或 False,最后將返回 True 的元素放到新列表中。
注意: Pyhton2.7 返回列表,Python3.x 返回迭代器對(duì)象,可強(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ù)會(huì)對(duì)參數(shù)序列中元素進(jìn)行累積。函數(shù)將一個(gè)數(shù)據(jù)集合(鏈表,元組等)中的所有數(shù)據(jù)進(jìn)行下列操作:用傳給 reduce 中的函數(shù) function(有兩個(gè)參數(shù))先對(duì)集合中的第 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() 會(huì)根據(jù)提供的函數(shù)對(duì)指定序列做映射。
第一個(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è)列表,對(duì)相同位置的列表數(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ù)量不一樣, 會(huì)根據(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è)元素,也不會(huì)繼續(xù)執(zhí)行了,只執(zhí)行了 4 個(gè)元素的的計(jì)算。
注意:
Python 2.x 返回列表。
Python 3.x 返回迭代器對(duì)象。
眾多python培訓(xùn)視頻,盡在python學(xué)習(xí)網(wǎng),歡迎在線學(xué)習(xí)!
網(wǎng)站欄目:創(chuàng)新互聯(lián)Python教程:Python中常用的內(nèi)置函數(shù)介紹
文章地址:http://www.dlmjj.cn/article/djidieh.html


咨詢
建站咨詢
