国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

三、python高級(jí)特性(切片、迭代、列表生成器、生成器)

2019-11-14 17:20:03
字體:
供稿:網(wǎng)友

1.python高級(jí)特性

1.1切片

list列表 L=['Mli','add','sal','saoo','Lkkl']

L[0:3]  #即為['Mli','add','sal']  從索引0開始,到索引3結(jié)束,但不包括3

L[:3]等價(jià)于 L[0:3]

L[-2:]  #即為 ['saoo','Lkkl']   最后一個(gè)元素的索引為-1

L[-2:-1]  #即為['Lkkl']

L=range(100)  #則L[1:6:2]為 每個(gè)兩個(gè)元素取一個(gè)數(shù)  所以輸出為[2,4]

tuple也可以用切片操作,只是切片不可變,操作以后還是切片  例如L=(1,2,3,4)   則L[0:3]輸出結(jié)果為(1,2,3)

字符串也可以用切片,例如 m='sajlkdjsalkjd'  則m[0:3]  輸出'saj'

1.2迭代

如果定義一個(gè)list或tuple,可以用for循環(huán)遍歷,稱之為迭代

對(duì)于dict類型,也可以運(yùn)用迭代,只不過輸出key值

例如:

dict={'lk':'36','klk':'37','kkd':'98'}    for n in dict:      PRint n

結(jié)果輸出

kkd
lk
klk

要想輸出value值只需

dict={'lk':'36','klk':'37','kkd':'98'}    for n in dict.itervalues():      print n

同樣如果想要輸出 key-value的值(兩個(gè)都輸出),需要將代碼改為 for n in dict.iteritems()  #此時(shí)n為一個(gè)tuple類型

for key,v in dict.ie=ieritems()

1.3列表生成式

顧名思義 list生成式

[x*x for x in range(3)]  #輸出結(jié)果為[0,1,4]

[x*x for x in range(3)  fi x%2==0] #輸出結(jié)果為[0,4]

[m+n for m in 'ABC' for n in 'abc'] #輸出結(jié)果為['Aa', 'Ab', 'Ac', 'Ba', 'Bb', 'Bc', 'Ca', 'Cb', 'Cc'](全排列)

L=['ABC','DEF','GHI']  [s.lower() for s in L]  #將L中的大寫字母改為小寫

1.4生成器(generator)

列表生成器工作時(shí),必須建立一個(gè)列表list,但是list的內(nèi)存有限制,不可能無限大,為了彌補(bǔ)這一不足,生成器自然而然誕生,生成器是在不斷循環(huán)的過程中推算出后面的結(jié)果,而不需要建立一個(gè)完整的list列表,所以不會(huì)占用那么多內(nèi)存

生成器有很多種產(chǎn)生的方法,其一就是將列表生成式的[]換位()

即:g=(x*x for x in range(5))  輸出時(shí)只能用g.next()輸出

即g.next()  #輸出0

g.next()  #輸出1

g.next()  #輸出2

g.next()  #輸出3

g.next()  #輸出4

g.next()  #輸出StopIteration

亦可用循環(huán)輸出,即:

for n in g

  print n

法二 用yield

例如斐波拉契數(shù)列 (每個(gè)數(shù)都是前兩個(gè)數(shù)的和)例1,1,2,3,5,8,13.....

一般的函數(shù)定義為

def fib(max):  a,b,n=0,1,0  if n<max:    a,b,n=b,a+b,n+1    print a

如果用生成器修改函數(shù),則只需把print改為yield

def fib(max):  a,b,n=0,1,0  if n<max:    a,b,n=b,a+b,n+1     yield a調(diào)用時(shí)  for n in fib(6):      print n

或者   o=fib(5)

   o.next()  進(jìn)行輸出

fib不是普通的函數(shù),而是generator,在執(zhí)行過程中,遇到y(tǒng)ield就中斷,下次繼續(xù)執(zhí)行,我們在循環(huán)過程中不斷調(diào)用yield,就會(huì)不斷中斷。當(dāng)然要給循環(huán)設(shè)置一個(gè)條件來退出循環(huán),不然就會(huì)產(chǎn)生一個(gè)無限數(shù)列出來。


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 漳浦县| 竹北市| 岑溪市| 黎城县| 尚义县| 洛南县| 衡水市| 都安| 石林| 东丽区| 开原市| 石楼县| 平定县| 霸州市| 鄂托克前旗| 灵寿县| 仁寿县| 镶黄旗| 大方县| 华安县| 电白县| 榆林市| 苏尼特右旗| 新邵县| 朔州市| 浦城县| 泸州市| 伽师县| 长春市| 鲜城| 元谋县| 弥渡县| 灌南县| 包头市| 巴南区| SHOW| 盐池县| 汾阳市| 巴林左旗| 随州市| 政和县|