生成式和生成器 迭代器 裝飾器

2021-08-10 07:31:08 字數 1091 閱讀 2031

#列表生成式,能簡化很多** 

#第一項寫需要輸出的東西(i*i),中間寫for迴圈,後面寫條件

li = [i*i for i in xrange(1,10) if i%2==0]

print li

[4, 16, 36, 64] 

#列表生成器,他跟列表生成式的區別相當range和xrange的區別,資料大的時候節省記憶體空間 

#最簡單的辦法就把原來的換成()就可以了,不過輸出變成了迭代物件

li1 = (i*i for i in xrange(1,10) if i%2==0)

for i in li1:

print i

4 16 

36 64

#函式中的列表生成器 

#函式中包含yield語句的函式會被特地的編譯成生成器,當函式被呼叫時,他們返回乙個生成器物件 

#每當遇到yield的時候,可以當成return

def f(n):

sum = 0

i = 0

while(isum +=i

i +=1

yield(sum)

print (type(f(5)))

for i in f(5):

print(i)

type 『generator』 

0 1 

3 6 

10#列表生成式:一次性生成所有的資料,然後儲存在記憶體中,適合小量資料 

#列表生成器:返回乙個可迭代物件,即『generator』物件,必須通過迴圈才能一一取出資料 

#可迭代物件:可以通過迴圈呼叫出來的,就是可迭代物件 

列印9*9乘法表

#i取值範圍為1, 2, 3, 4, 5, 6, 7, 8, 9

for i in xrange(1,10):

#每個內層for迴圈結束後換行,即在輸出完九九乘法表一行後換行。

print

#j取值範圍為1, 2, ..., i

for j in xrange(1,i+1):

#逗號用來取消自動換行

print '%d*%d = %d' %(i,j,i*j),

裝飾器,生成器,迭代器

裝飾器 import time def show time func def inner x start time time.time func x end time time.time print end time start time return inner show time def add...

迭代器 生成器 裝飾器

1.迭代器 1 定義 同時滿足 iter 方法和next 方法的物件就是迭代器。3 型別 可迭代物件通過iter 轉為迭代器 生成器是一種特殊的迭代器。2.生成器 1 定義 生成器是迭代器的一種,包括含有yield關鍵字函式和生成器表示式。2 用法 所有函式呼叫的引數都是第一次呼叫時保留的,而不是新...

生成器 迭代器 裝飾器

迭代器表面上看是乙個資料流物件或者容器,當使用其中的資料時,每次從資料流中取出乙個資料,直到資料被取完,而且資料不會被重複使用。從 的角度來看,迭代器是實現了迭代器協議方法的物件和類。迭代器協議方法主要是兩個 iter 該方法返回物件本身,它是for語句使用迭代器的要求 next 方法用於返回容器中...