python的列表生成式,生成器和generator對(duì)象你了解嗎
列表生成式
可以使用列表生成式生成 列表元素。
例如:

列表還支持 if … else 與 for 循環(huán)組合的單行表達(dá)式進(jìn)行初始化。
>>> example = [i*i if i%2 == 0 else 2*i for i in range(1,11)] # 1~10中,奇數(shù)*2,偶數(shù)平方 >>> print ([i for i in range(1,11)]) # 對(duì)照組,1~10 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] >>> example [2, 4, 6, 16, 10, 36, 14, 64, 18, 100]

當(dāng)然,if … else 本就支持單行寫法。
>>> a = 100
>>> if a < 100:
... print("lt 100")
... elif a == 100:
... print("eq 100")
... else:
... print("gt 100")
...
eq 100
>>>
>>> # 如果將上述if...else寫為單行式
... print("lt 100") if a < 100 else print("eq 100") if a == 100 else print("gt 100")
eq 100

列表表達(dá)式初始化 dict 或 set
同時(shí),我們也可以使用單行for初始化 set

還可以用于提取list的下標(biāo)與元素,需要注意的是,如果使用 : 的key:value的形式,最終結(jié)果是dict。

generator對(duì)象
探索,是否可以類比上述,生成tuple。當(dāng)我這么做的時(shí)候,結(jié)果獲得一個(gè)generator類型。

簡(jiǎn)單來說返回的generator是一個(gè)可迭代對(duì)象,因此我們嘗試使用 for 遍歷它的時(shí)候,是可以遍歷得到其所有數(shù)據(jù)的。

而這里的 可迭代對(duì)象(Iterable)主要指可以直接作用于for循環(huán)的對(duì)象(for循環(huán)本質(zhì)上就是通過不斷調(diào)用next()函數(shù)進(jìn)行迭代)。
包括內(nèi)置的(list、tuple、dict、set、str等)和生成器(generator)。
生成generator對(duì)象
主要有兩種方法:
- 第一種使用
()包裹列表生成式 - 第二種,使用 yield 標(biāo)記
示例:演示yield

這里可以通過 next() 獲取內(nèi)部元素

總結(jié)
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
python 實(shí)現(xiàn)docx與doc文件的互相轉(zhuǎn)換
這篇文章主要介紹了python 實(shí)現(xiàn)docx與doc文件的互相轉(zhuǎn)換操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2021-03-03
Python利用公共鍵如何對(duì)字典列表進(jìn)行排序詳解
這篇文章主要給大家介紹了關(guān)于Python利用公共鍵如何對(duì)字典列表進(jìn)行排序的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用python具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-05-05
win7上python2.7連接mysql數(shù)據(jù)庫的方法
這篇文章主要介紹了win7上python2.7連接mysql數(shù)據(jù)庫的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-01-01
python3 os進(jìn)行嵌套操作的實(shí)例講解
在本篇文章里小編給大家整理了關(guān)于python3 os進(jìn)行嵌套操作的實(shí)例內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。2020-11-11
多線程python的實(shí)現(xiàn)及多線程有序性
這篇文章主要介紹了多線程python的實(shí)現(xiàn)及多線程有序性,多線程一般用于同時(shí)調(diào)用多個(gè)函數(shù),cpu時(shí)間片輪流分配給多個(gè)任務(wù)2022-06-06

