1. 程式人生 > >第013講:元組:戴上了枷鎖的列表

第013講:元組:戴上了枷鎖的列表

目錄

 

測試題

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

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

2. 當元組和列表掉下水,你會救誰?

3. 請將左邊列表的內建方法與右邊的註釋連線,並圈出元組可以使用的方法。

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

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

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

7. 上節課我們通過課後作業的形式學習到了“列表推導式”,那請問如果我把中括號改為小括號,會不會得到“元組推導式”呢?自己動手試試看再看答案哦^_^

8. 請寫下這一節課你學習到的內容:格式不限,回憶並複述是加強記憶的好方式!


測試題

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

列表:一個大倉庫,你可以隨時往裡邊新增和刪除任何東西。
  
元組:封閉的列表,一旦定義,就不可改變(不能新增、刪除或修改)。

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

當我們希望內容不被輕易改寫的時候,我們使用元組(把權力關進牢籠)。
  
當我們需要頻繁修改資料,我們使用列表。

2. 當元組和列表掉下水,你會救誰?

如果是我,我會救列表,因為列表提供了比元組更豐富的內建方法,這相當大的提高了程式設計的靈活性。
  
回頭來看下元組,元組固然安全,但元組一定建立就無法修改(除非通過新建一個元組來間接修改,但這就帶來了消耗),而我們人是經常搖擺不定的,所以元組只有在特殊的情況才用到,平時還是列表用的多。
  
綜上所述,小甲魚會救列表(列表是美眉)。

3. 請將左邊列表的內建方法與右邊的註釋連線,並圈出元組可以使用的方法。

看吧,元組果然比較悲劇吧,僅有兩個方法元組可以使用,其他方法都不行,不信你試試?

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

在拼接只有一個元素的元組的時候,例如我們課上舉的例題:

>>> temp = (‘小甲魚’, ‘黑夜’, ‘迷途’, ‘小布丁’)
# 如果我想在“黑夜”和“迷途”之間插入“怡靜”,我們應該:
>>> temp = temp[:2] + (‘怡靜’,) + temp[2:]

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

所有的多物件的、逗號分隔的、沒有明確用符號定義的這些集合預設的型別都是元組,自己在IDLE中鍵入以下程式碼,並體會一下:

>>> x, y, z = 1, 2, 3
>>> type(x)
<class 'int'>
>>> h = x, y, z
>>> type(h)
<class 'tuple'>

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

8. 請寫下這一節課你學習到的內容:格式不限,回憶並複述是加強記憶的好方式!

由於元組(tuple)和列表是近親關係,所以元組和列表在實際使用上是非常相似的。

我們這節課主要通過討論元組和列表到第有什麼不同來學習元組。

我們主要從以下幾個方面來討論學習:

  • 建立和訪問一個元組。

就算加上了小括號,也不一定是元組。

就算沒有小括號,也可能是元組。

元組的標誌是逗號。

例如:

>>> temp = (1)
           >>> temp
           1
            >>> type(temp)
           <class 'int'>
           >>> temp1 = 1,2,3,4
           >>> temp1
           (1, 2, 3, 4)
           >>> type(temp1)
           <class 'tuple'>

想要建立一個空元組,就是temp = ( ),對於只有一個元素的元組,須這樣:temp = (1,),這裡逗號不可少,括號可以不要。

  • 更新和刪除一個元組

對於元組而言,單獨刪除一個元素幾乎是不可能的,但是可以利用切片的方式來間接的刪除或增加一個元素。例如:

>>> temp = ('小甲魚', '黑夜', '迷途', '小布丁')
           >>> temp = temp[:2] + ('怡景',) + temp[2:]
           >>> temp
           ('小甲魚', '黑夜', '怡景', '迷途', '小布丁')
           >>> temp = temp[:1] + temp[2:]
           >>> temp
           ('小甲魚', '怡景', '迷途', '小布丁')

可以使用  del 元組名  的方式刪除整個元組,但是不推薦使用。當資料沒有標籤的時候,系統會自動刪除。

  • 元組相關的操作符

拼接操作符(拼接操作符要求拼接的成分資料型別相同)

重複操作符(*整數)

關係操作符(>  <  >=  <=  ==  !=)

邏輯操作符 (and or not)

成員操作符(in    not in)