真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

列表解析、字典解析、集合解析的區(qū)別

這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)?lái)有關(guān)列表解析、字典解析、集合解析的區(qū)別,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

站在用戶的角度思考問(wèn)題,與客戶深入溝通,找到天全網(wǎng)站設(shè)計(jì)與天全網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名與空間、虛擬主機(jī)、企業(yè)郵箱。業(yè)務(wù)覆蓋天全地區(qū)。

一、所謂解析/解析式,也稱為推導(dǎo)/推導(dǎo)式,對(duì)應(yīng)英語(yǔ)單詞為comprehension,是Python的一種獨(dú)有特性。解析就是從一個(gè)數(shù)據(jù)序列構(gòu)建另一個(gè)新的數(shù)據(jù)序列的結(jié)構(gòu)體,其本質(zhì)是使用一個(gè)可迭代對(duì)象,按一定規(guī)則通過(guò)表達(dá)式、函數(shù)等運(yùn)算后得到一個(gè)新的迭代對(duì)象,列表解析得到的就是列表對(duì)象,字典解析得到的是字典,集合解析得到的是集合。

二、語(yǔ)法釋義

1.列表解析:通過(guò)解析表達(dá)式從一個(gè)可迭代對(duì)象生成一個(gè)新的列表

[expr for iter_var in iterable]
[expr for iter_var in iterable if cond_expr]

其中:

語(yǔ)句中的中括號(hào)表示返回?cái)?shù)據(jù)轉(zhuǎn)換為列表。

expr為計(jì)算新列表元素值的表達(dá)式

iter_var:表示運(yùn)算表達(dá)式處理的對(duì)象所在的容器,解析就是針對(duì)在可迭代對(duì)象iter_var中的每個(gè)元素進(jìn)行表達(dá)式運(yùn)算后得到的值作為新列表的元素過(guò)程;

if cond_exp:表示可迭代對(duì)象中的元素需要滿足指定條件才會(huì)參與表達(dá)式運(yùn)算,如果需要帶多個(gè)條件,可以在if表達(dá)式后再疊加一個(gè)if表達(dá)式。如:

l=[chr(i+ord('A')) for i in range(26) if i%2==0 if i%3==0 if i%4==0 ]#結(jié)果為:['A', 'M', 'Y']

上面例子中:

ord(c)函數(shù):返回字母c的unicode碼,ASCII字符返回的就是ASCII碼

chr(i)函數(shù):返回一個(gè)unicode碼對(duì)應(yīng)的字符,0 <= i <= 0x10ffff,如果i是ASCII碼的范圍則返回ASCII字符

range是上一節(jié)介紹的函數(shù),在此用于生成一個(gè)0到25的序列迭代的range對(duì)象。

上述列表解析的語(yǔ)句表示:用for訪問(wèn)range對(duì)象的每個(gè)元素i,當(dāng)元素i能整除2、3、4即能被12整除時(shí),就生成一個(gè)字母,該字母的ASCII碼值為'A'的ASCII碼值加上i的值,按照上述邏輯,i為0、12、 24時(shí)滿足要求,對(duì)應(yīng)的字母即為結(jié)果列表中的元素。

2.集合解析:通過(guò)解析表達(dá)式從一個(gè)可迭代對(duì)象生成一個(gè)新的集合

{expr for iter_var in iterable }
{expr for iter_var in iterable if cond_expr}

集合解析與列表解析的區(qū)別就是將列表解析的中括號(hào)換成大括號(hào),以此決定返回值是一個(gè)集合,其他的沒(méi)有什么不同。

注意:集合是會(huì)剔重的,如果出現(xiàn)重復(fù)值則只保留一個(gè)。

3.字典解析:通過(guò)解析表達(dá)式從一個(gè)可迭代對(duì)象生成一個(gè)新的字典

{key_expr:value_expr for iter_var in iterable }
{key_expr:value_expr for iter_var in iterable if cond_expr }

字典解析也是使用大括號(hào),但是必須在語(yǔ)句中同時(shí)指定鍵和值的計(jì)算表達(dá)式,確保生成的元素是使用冒號(hào)分隔的鍵-值對(duì),其他的與集合解析類似。其中鍵的計(jì)算表達(dá)式為key_expr,值的計(jì)算表達(dá)式為value_expr。

注意:字典的鍵必須是唯一的,如果計(jì)算元素時(shí)出現(xiàn)鍵重合,如果出現(xiàn)重復(fù)值則只保留一個(gè)。

舉例:用一個(gè)數(shù)字列表生成數(shù)字和字母(計(jì)算方法參考上面的例子)映射關(guān)系的字典數(shù)據(jù)

d={i:chr(ord('a')+i) for i in [1,1,2,3]} ?#結(jié)果d的值為:{1: 'b', 2: 'c', 3: 'd'}
d={i:chr(ord('a')+i+index) for index,i in enumerate([1,1,2,3])}

#結(jié)果d的值為:{1: 'c', 2: 'e', 3: 'g'},enumerate函數(shù)請(qǐng)參考上一節(jié)的介紹

上面例子可以看到,重復(fù)的鍵1只保留了一個(gè)字典元素,該元素保留的是該鍵最后一個(gè)值對(duì)應(yīng)的鍵-值對(duì)。

三、補(bǔ)充說(shuō)明

1.在生成器一節(jié)已經(jīng)介紹了生成器解析,生成器解析實(shí)際上就是生成器表達(dá)式,在此不再贅述;

2.在前面介紹時(shí)沒(méi)有提到元組解析,同時(shí)當(dāng)語(yǔ)句外面用小括號(hào)時(shí)實(shí)際對(duì)應(yīng)的是生成器而不是元組,因此Python并沒(méi)有元組解析這個(gè)概念,如果需要通過(guò)解析得到元組,可以通過(guò)列表解析、生成器解析方式先生成列表或生成器,再通過(guò)tuple方法將其轉(zhuǎn)換為元組;

3.雖然用語(yǔ)句循環(huán)賦值的方式也能實(shí)現(xiàn)上述幾種解析方法,但使用解析的方法更精簡(jiǎn)、運(yùn)行更快;

4.解析不會(huì)改變參數(shù)中的原有迭代對(duì)象的值;

5.在解析中使用多個(gè)for語(yǔ)句等同于多個(gè)for循環(huán),如下面代碼實(shí)現(xiàn)了兩個(gè)列表生成第三個(gè)列表且其元素為前2個(gè)列表的笛卡爾積:

numb=[i for i in range(2)]
abc=[chr(ord('a')+k) ?for k in range(2)]
d=[(a,n) for a in abc for n in numb]

 #結(jié)果為:

[('a', 0), ('a', 1), ('b', 0), ('b', 1)]

上述就是小編為大家分享的列表解析、字典解析、集合解析的區(qū)別了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


網(wǎng)站欄目:列表解析、字典解析、集合解析的區(qū)別
網(wǎng)頁(yè)URL:http://weahome.cn/article/pcpico.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部