天天看點

【小甲魚Python】元組:戴上了枷鎖的清單&&課後作業筆記

筆記

元組

不可以修改的清單。

與字元串,清單進行對比:

1.可否修改:元組和字元串一樣都不能修改;但清單可以修改。

2.所含元素:元組和清單一樣,都可以包含任何類型元素;但字元串就是str類型。

建立元組

1.tuple1 = (1,2,3,4,5)

2.空元組 tuple1 = ()

3.标志性符号是“,”

驗證如下:

【小甲魚Python】元組:戴上了枷鎖的清單&&課後作業筆記
【小甲魚Python】元組:戴上了枷鎖的清單&&課後作業筆記
【小甲魚Python】元組:戴上了枷鎖的清單&&課後作業筆記

再如:

【小甲魚Python】元組:戴上了枷鎖的清單&&課後作業筆記

但空元組的建立隻能寫成tuple1 = () 而非 tuple1 = (,)

元組的操作

1.索引,切片,拷貝

與清單相同,不做贅述。

2.連接配接操作符,重複操作符,成員資格運算符,邏輯運算符

與清單相同,不做贅述。

 3.改變元組

與改變字元串相同,利用切片和連接配接的方法實作添加或删除某個元素(實為建立一個新元組,而非改變了原來的元組)。

【小甲魚Python】元組:戴上了枷鎖的清單&&課後作業筆記

4.删除元組

del tuple1(很少使用,因為Python有回收機制)

課後作業 

0. 請用一句話描述什麼是清單?再用一句話描述什麼是元組?

答:

 清單:一個大倉庫,可包含任何類型的元素,可随意添加删除元素。

 元組:戴上了枷鎖的清單,可包含任何元素,但不可以随意添加删除元素。

1. 什麼情況下你需要使用元組而不是清單?

答:

不希望所含元素發生改變時。

2. 當元組和清單掉下水,你會救誰?

答:

我會救清單,因為清單可以實作的功能更多,更友善。

3. 請将下圖左邊清單的内置方法與右邊的注釋連線,并圈出元組可以使用的方法。

【小甲魚Python】元組:戴上了枷鎖的清單&&課後作業筆記

4. 建立一個元組,什麼情況下逗号和小括号必須同時存在,缺一不可?

答:

除了建立空元組以外的情況。

5. x, y, z = 1, 2, 3 請問x, y, z是元組嗎?

答:

所有的多對象的、逗号分隔的、沒有明确用符号定義的這些集合預設的類型都是元組,自己在IDLE中鍵入以下代碼,并體會一下:

>>> x, y, z = 1, 2, 3

>>> type(x)

>>> h = x, y, z

>>> type(h)           
【小甲魚Python】元組:戴上了枷鎖的清單&&課後作業筆記

6. 請寫出以下情景中應該使用清單還是元組來儲存資料:

1) 遊戲中角色的屬性:清單

2) 你的身份證資訊:元組

3) 論壇的會員:清單

4) 團隊合作開發程式,傳遞一個你并不了解具體實作的函數的參數:元組

5) 航天火箭各個元件的具體配置參數:元組

6) NASA系統中記錄已經發現的行星資料:清單

7. 上節課我們通過課後作業的形式學習到了“清單推導式”,那請問如果我把中括号改為小括号,會不會得到“元組推導式”呢?

答:

Python3 木有“元組推導式”,為嘛?沒必要丫,有了“清單推導式”已經足夠了。

那為什麼“>>> tuple1 = (x**2 for x in range(10))”不會報錯?

因為你誤打誤撞得到了一個生成器:

>>> type(tuple1)
<class 'generator'>           

關于生成器的概念小甲魚今後會細講,你可以嘗試這麼去通路我們剛剛的生成器:

# 注意,Python3 開始 next() 方法改為 __next__() 哦~

>>> tuple1.__next__()
0
>>> tuple1.__next__()
1
>>> tuple1.__next__()
4
>>> tuple1.__next__()
9
>>> tuple1.__next__()
16
>>> tuple1.__next__()
25
>>> tuple1.__next__()
36