python 推导式_Python 入门之 推导式
推導(dǎo)式就是構(gòu)建比較有規(guī)律的列表,生成器,字典等一種簡便的方式。
1、推導(dǎo)式
(1)列表推導(dǎo)式
<1> 普通循環(huán): [變量 for循環(huán)]
print([i for i in range(10)])
<2> 篩選模式:[加工后的變量 for循環(huán) 加工條件]
print([i for i in range(10) if i % 2 ==0])
(2)集合推導(dǎo)式
<1> 普通循環(huán): {變量 for循環(huán)}
print({i for i in range(10)})
<2> 篩選模式:{加工后的變量 for循環(huán) 加工條件}
print({i for i in range(10) if i % 2 == 1})
(3)字典推導(dǎo)式
<1> 普通循環(huán): {鍵:值 for循環(huán)}
print({i: i+1 for i in range(10)})
<2> 篩選:{加工后的鍵:值 for循環(huán) 加工條件}
print({i: i+1 for i in range(10) if i % 2 == 0})
(4)生成器推導(dǎo)式
<1> 普通循環(huán):(變量 for循環(huán))
tu = (i for i in range(10))
<2> 篩選:(加工后的變量 for循環(huán) 加工條件)
# tu = (i for i in range(10) if i > 5)
數(shù)據(jù)類型 (pyhton3: range() | python2 :xrange()) 都是可迭代對象 __iter__()
文件句柄是迭代器 __iter__() __next__()
2、生成器表達式和列表推導(dǎo)式的區(qū)別
(1)列表推導(dǎo)式比較耗內(nèi)存,所有數(shù)據(jù)一次性加載到內(nèi)存。而生成器表達式遵循迭代器協(xié)議,逐個產(chǎn)生元素。
(2)得到的值不一樣,列表推導(dǎo)式得到的是一個列表.生成器表達式獲取的是一個生成器
(3)列表推導(dǎo)式一目了然,生成器表達式只是一個內(nèi)存地址。
? 無論是生成器表達式,還是列表推導(dǎo)式,都只是Python提供的一個相對簡單的構(gòu)造方式,因為使用推導(dǎo)式非常簡單,所以大多數(shù)都會為之著迷,這個一定要慎重,推導(dǎo)式只能構(gòu)建相對復(fù)雜的并且有規(guī)律的對象,對于沒有什么規(guī)律,而且嵌套層數(shù)比較多(for循環(huán)超過三層)這樣就不建議使用推導(dǎo)式構(gòu)建。
生成器的惰性機制: 生成器只有在訪問的時候才取值,說白了.你找他要才給你值.不找他要.他是不會執(zhí)行的.
總結(jié)
以上是生活随笔為你收集整理的python 推导式_Python 入门之 推导式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 福利彩票双色球兑奖时间?
- 下一篇: 安华智能马桶一直显示落座什么意思