1、為什麼需要生成器?
通過列表生成式,我們可以直接建立乙個列表。但是,受到記憶體限制,列表容量肯定是有限的。而且,建立乙個包含100萬個元素的列表,不僅占用很大的儲存空間,如果我們僅僅需要訪問前面幾個元素,那後面絕大多數元素占用的空間都白白浪費了。2、利用列表生成的方法建立乙個列表和生成器所以,如果列表元素可以按照某種演算法推算出來,那我們是否可以在迴圈的過程中不斷推算出後續的元素呢?這樣就不必建立完整的list,從而節省大量的空間。在python中,這種一邊迴圈一邊計算的機制,稱為生成器:generator。
#列表
d = [x for x in range(1,12)]
#生成器
g = (x for x in range(1,12))
可以用type函檢視 d 和 g的型別 ,d是 list,g是generator
#生成器的迭代
g = (x for x in range(1,12))
for i in g:
print(i)
4、元素一旦定義完成,內部的資料是無法改動的,而生成器內部的資料可以發生變化
5、定義generator的另一種方法:如果乙個函式定義中包含yield
關鍵字,那麼這個函式就不再是乙個普通函式,而是乙個generator:
def fib(max):
n, a, b = 0, 0, 1
while n < max:
yield b
a, b = b, a + b
n = n + 1
return 'done'
python中元組與小括號的關係
在學習python 的時候。說到有兩種資料型別,一種叫 列表,一種叫做元組,可以認為,元組是功能精簡的列表。因為它少了列表很多功能。但是又有相識。定義他們的時候,主要是用中括號和小括號之分。例如 定義乙個列表 mylist one two 3333 定義乙個元組 myzu one two 大概就這麼...
Python小括號 中括號 大括號和尖括號的含義
在使用python做專案的過程中發現這種語言使用了很多種型別的括號來表達資料型別,常見的有四種,分別是 小括號 中括號 和大括號,也叫做花括號,還有尖括號 其作用也各不相同,分別用來代表不同的python基本內建資料型別。1 python中的小括號 代表tuple元組資料型別,元組是一種不可變序列。...
shell中的大括號和小括號
2009 7 23 13 27 32 在這裡我想說的是幾種shell裡的小括號,大括號結構和有括號的變數,命令的用法,如下 1.2.cmd 3.和 4.5.exp 6.var pattern var pattern var pattern var pattern 現在分述如下 1.shell中變數的...