Python3---元組、generator

元組

元組的概念

Python的元組與列表類似,不同之處在於元組的元素不能修改,元組使用小括號,列表使用方括號,元組創建很簡單,只需要在括號中添加元素,並使用逗號隔開即可。

  1. 元組,一旦創建,就沒有任何方法可以修改元組中的元素(可變對象除外,因爲可變對象內的值可以改變),只能使用del命令刪除整個元組。
  2. Python內部實現對元組做了大量優化,訪問和處理速度比列表快。
  3. 調用函數時使用元組傳遞參數可以防止在函數中修改元組,使代碼更安全
  4. 元組可用作字典的鍵,而列表則永遠都不可能當做字典鍵使用。

元組的創建

可以通過()tuple()來創建空元組,元組具有不可修改的特性
在這裏插入圖片描述

訪問元組

元組可以使用下標索引來訪問元組中的值
在這裏插入圖片描述

修改元組

元組中的元素值是不允許修改的,但可以對元組通過‘+’、‘*’進行連接組合。
注意如果
在這裏插入圖片描述

刪除元組

元組中的元素值是不允許刪除的,但可以使用del語句來刪除整個元組。
在這裏插入圖片描述

關於元組的不可變

所謂的不可變指的是元組所指向的內存中的內容不可變。可以把元組看作不可變列表,也就是說元組裏面的元素是不能隨意改變的。但是,元組是可以接受一個可變對象------列表作爲元素
在這裏插入圖片描述

元組內置函數

Python元組包含了以下內置函數

  1. cmp(tuple1,tuple2):比較兩個元組元素
  2. len(tuple):計算元組元素個數
  3. max(tuple):返回元組中元素最大值
  4. min(tuple):返回元組中元素最小值
  5. tuple(seq):將列表轉換爲元組
    在這裏插入圖片描述

元組嵌套

在這裏插入圖片描述

循環遍歷元組

在這裏插入圖片描述

元組與列表的異同

元組(tuple)和列表(list)非常相似,獲取元素的方法和list是一樣的,但是元組一旦初始化就不能修改,因而沒有append(),insert()等方法。由於元組不可變性,所以代碼更安全可靠。

generator

概念

  1. 生成器推導式的結果是一個生成器對象,而不是列表,也不是元組。
  2. 使用生成器對象的元素時,可以根據需要將其轉化爲列表或元組
  3. 可以使用__next__()或者內置函數訪問生成器對象,但不管使用何種方法訪問其元素,當所有元素訪問結束以後,如果需要重新訪問其中的元素,必須重新創建該生成器對象。即生成器的對象好比一碗飯,喫完了就沒了,必須重新去盛飯。
  4. 生成器對象創建與列表推導式不同的地方是,生成器推導式是用圓括號創建的

操作

在這裏插入圖片描述

拓展

生成器在斐波那契數列的應用

  • 包含yield語句的函數可以用來創建可迭代的生成器對象
  • 生成器對象具有惰性求值的特點,只在需要時返回元素,比列表推導式具有更高的效率,尤其適合大量數據的遍歷,因爲列表數據比較多的時候會佔用過多的內存,可能會導致MemoryError內存錯誤或者程序運行時出現卡頓的情況
  • 惰性求值就是延遲求值,表達式不會在它被綁定到變量之後就立即求值,而是等用到時再求值。因爲在創建一個很大的生成器對象時,對內存的開銷非常大,太大時python會直接報錯,所以只在需要的時候纔會返回元素
  • 而生成器使用__next__()來獲取對象獲取不到時會導致StopIteration異常錯誤,可以使用for循環來遍歷生成器對象
    在這裏插入圖片描述
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章