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...