首頁 > 軟體

python的列表生成式,生成器和generator物件你瞭解嗎

2022-03-15 13:02:54

列表生成式

可以使用列表生成式生成 列表元素。

例如:

列表還支援 if … else 與 for 迴圈組合的單行表示式進行初始化。

>>> example = [i*i if i%2 == 0 else 2*i for i in range(1,11)] # 1~10中,奇數*2,偶數平方
>>> print ([i for i in range(1,11)]) # 對照組,1~10
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> example
[2, 4, 6, 16, 10, 36, 14, 64, 18, 100]

當然,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

列表表示式初始化 dict 或 set

同時,我們也可以使用單行for初始化 set

還可以用於提取list的下標與元素,需要注意的是,如果使用  的key:value的形式,最終結果是dict。

generator物件

探索,是否可以類比上述,生成tuple。當我這麼做的時候,結果獲得一個generator型別。

簡單來說返回的generator是一個可迭代物件,因此我們嘗試使用 for 遍歷它的時候,是可以遍歷得到其所有資料的。

而這裡的 可迭代物件(Iterable)主要指可以直接作用於for迴圈的物件(for迴圈本質上就是通過不斷呼叫next()函數進行迭代)。

包括內建的(listtupledictsetstr等)和生成器(generator)。

生成generator物件

主要有兩種方法:

  • 第一種使用 () 包裹列表生成式
  • 第二種,使用 yield 標記

範例:演示yield

這裡可以通過 next() 獲取內部元素

總結

本篇文章就到這裡了,希望能夠給你帶來幫助,也希望您能夠多多關注it145.com的更多內容!  


IT145.com E-mail:sddin#qq.com