python3 列表解析與generator生成器

2021-08-20 08:37:08 字數 2035 閱讀 5046

t = [1,2,3,4]

print(t)

t = [x+10 for x in t]

print(t)

t = [x+10 for x in range(10)]

print(t)

輸出為:

如**所示的兩種列表解析的情況:

第一種,先建立了乙個list物件,在in後面接這個list物件

第二種,直接在in後面接乙個range物件

共同點,in後面的,都是可以迭代的物件。

總結,列表解析的格式為(不考慮列表解析外部的函式或者符號):

關於x的式子(一般就是x自身)      for      x        in        可迭代物件

還可以在後面加if判斷:

關於x的式子(一般就是x自身)      for      x        in        可迭代物件         if          布林表示式

形如:

根據,列表解析,外部的函式或符號來判斷返回的型別:

1.如果外部是(),即小括號。那麼返回生成器generator(注意,此物件也是可以迭代的物件)

2.如果外部是list(),或者,即中括號。那麼返回list列表。

3.如果外部是tuple(),那麼返回的是tuple元祖。

4.如果外部是set(),或者是{},其沒有使用冒號,那麼返回的是set集合。

5.如果外部是dict{},那麼返回的是dict字典。

列表解析用於檔案

1.第一種:使用生成器,再使用next方法

當然,你可以用for迴圈來使用這個生成器:

g=(x for x in open('test.txt',encoding='utf-8'))

for line in g:

print(line)

這樣,你就不用擔心出現stopiteration的錯誤了。輸出為:

因為每個line最後面是\n,所以輸出結果之間有空行。

2.第二種,使用list列表

g=[x for x in open('test.txt',encoding='utf-8')]

print(g)

因為list已經一次性把文字的內容,按行存起來了,所以可以直接列印。而上一種情況,則需要手動迭代,或者用for迴圈來迭代。而直接print生成器是沒有意義的。

python3 列表解析與generator生成器

t 1,2,3,4 print t t x 10 for x in t print t t x 10 for x in range 10 print t 輸出為 如 所示的兩種列表解析的情況 第一種,先建立了乙個list物件,在in後面接這個list物件 第二種,直接在in後面接乙個range物件 ...

Python3 列表解析和迭代器的記憶體占用過程分析

列表解析表示式 先來看乙個例子 leetcode 171 題 解法很簡單 sum 0 for i in range 0 len s sum 26 len s 1 i ord s i ord a 1 return sum那麼,這裡也可以這麼寫。return sum 26 len s 1 i ord s...

python列表解析的方式 python列表解析

列表解析來自函式式程式語言 haskell 語法如下 expr for iter var in iterable expr for iter var in iterable if cond expr 第一種語法 首先迭代iterable裡所有內容,每一次迭代,都把iterable裡相應內容放到ite...