一、生成器
列表生成器
>>>a普通青年[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> b =
...
>>>b
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> a =b
>>>a
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>>a文藝青年[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> a = map(lambda x:x+1, a)
>>>a
>>> for i in a:print
(i)... 23
4567
891011
>>> a = [i+1 for i in range(10)]裝逼青年>>>a
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
這就叫做列表生成器
生成器通過列表生成式,我們可以直接建立乙個列表。但是,受到記憶體限制,列表容量肯定是有限的。而且,建立乙個包含100萬個元素的列表,不僅占用很大的儲存空間,如果我們僅僅需要訪問前面幾個元素,那後面絕大多數元素占用的空間都白白浪費了。
所以,如果列表元素可以按照某種演算法推算出來,那我們是否可以在迴圈的過程中不斷推算出後續的元素呢?這樣就不必建立完整的list,從而節省大量的空間。在python中,這種一邊迴圈一邊計算的機制,稱為生成器:generator。
要建立乙個generator,有很多種方法。第一種方法很簡單,只要把乙個列表生成式的改成
()
,就建立了乙個generator:
1 >>> l = [x * x for x in range(10)]建立2 >>>l
3 [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
4 >>> g = (x * x for x in range(10))
5 >>>g
6at 0x1022ef630>
l
和g
的區別僅在於最外層的
和()
,l
是乙個list,而g
是乙個generator。
我們可以直接列印出list的每乙個元素,但我們怎麼列印出generator的每乙個元素呢?
學習第五天
清楚測試用例是什麼 測試用例的重要性 有效性 測試用例是測試人員測試過程中的重要參考依據,準確的測試用例的計畫 執行和跟蹤是 測試的有效性的有力證明 可復用性 設計良好的測試用例可以重複執行,能節約時間,提高測試效率 易組織性 清晰詳細的測試用例能夠便於測試執行的開展 可評估性 測試用例的通過率是檢...
Java學習第五天
當類載入器需要載入某個類時,類載入器會在載入初始化後生成該類的乙個類物件 class 用於描述該類的元資料資訊等。在其後的連線過程中,會初始化該類的靜態成員 變數或靜態初始化器 靜態初始化變數和初始化器按照先後順序執行初始化。例如 static int a 10 static 這樣初始化後a 100...
C 學習第五天
c 中的is和as is可用於任何型別。例如 int a 10 a is object true object o 10 o is int true o person o is int false as右側型別必須為引用型別或可空型別。as操作如果失敗,不丟擲異常,而是返回null 結構 struc...