Python學習日記(五)
元組
- 定義:元組和列表非常相似,元組是固定了的列表,定義後的元組內容不可再進行修改,不能隨意插入或刪除元素
- 建立和訪問元組
建立元組的方法和建立列表相似,建立元組用()進行建立;
訪問元組的方法和訪問列表相同,都是利用索引進行訪問;
修改元組的元素會報錯。
-
>>> tuple1=(1,2,3,4,5,6) >>> tuple1 (1, 2, 3, 4, 5, 6) >>> tuple1[3] 4 >>> tuple1[3:] (4, 5, 6) >>> tuple1[::-1] (6, 5, 4, 3, 2, 1) >>> tuple1[2]=6 Traceback (most recent call last): File "<pyshell#15>", line 1, in <module> tuple1[2]=6 TypeError: 'tuple' object does not support item assignment
值得注意的是標識元組的不是'()'而是 ' ,',當建立的元組只包含一個元素的話要在元素後面加一個' ,'否則建立的是整型變數而不是元組;
建立空元組的方法和建立空列表相同。
-
>>> tuple1=(1) >>> type(tuple1) <class 'int'> >>> tuple1=1,2,3 >>> type(tuple1) <class 'tuple'> >>> tuple2=() >>> type(tuple2) <class 'tuple'> >>> tuple3=1, >>> type(tuple3) <class 'tuple'> >>> 8*(8) #乘號 64 >>> 8*(8,) #重複操作符 (8, 8, 8, 8, 8, 8, 8, 8)
-
更新和刪除元組
此處的更新和刪除指的並不是對原始元組進行更新和刪除,而是將原元組切片拷貝再進行拼接操作,原來的元組沒變,只是沒有了標籤;
直接刪除元組裡的元素是不能實現的,可以進行切片間接“刪除”,或者通過del 刪除整個元組(較少使用)。
-
>>> d=('yyl','bian','fu','po') >>> d ('yyl', 'bian', 'fu', 'po') >>> d=d[:2]+('da',)+d[2:] #注意增加的單個元組後面要加逗號 >>> d ('yyl', 'bian', 'da', 'fu', 'po')
- 元組常見操作
1、拼接操作+:可用+將元組拼接在一起,注意+拼接的資料型別要一致
2、重複操作符*:可用*對元組進行重複操作,例如d*8代表把元組d重複8遍
3、成員操作符in/not in也可用於元組
4、邏輯操作符:and、or
5、關係操作符:<、>、=、<=、>=
習題:
1、請用一句話描述什麼是列表?再用一句話描述什麼是元組?
答:列表:一個大倉庫,你可以隨時往裡邊新增和刪除任何東西。
元組:封閉的列表,一旦定義,就不可改變(不能新增、刪除或修改)。
2、什麼情況下你需要使用元組而不是列表?
答: 當我們希望內容不被輕易改寫的時候,我們使用元組(把權力關進牢籠)。當我們需要頻繁修改資料,我們使用列表。
3、當元組和列表掉下水,你會救誰?
答: 列表提供了比元組更豐富的內建方法,這相當大的提高了程式設計的靈活性。回頭來看下元組,元組固然安全,但元組一定建立就無法修改(除非通過新建一個元組來間接修改,但這就帶來了消耗),而我們人是經常搖擺不定的,所以元組只有在特殊的情況才用到,平時還是列表用的多
4、將內建方法與註釋連線,並圈出元組可以使用的方法
5、建立一個元組,什麼情況下逗號和小括號必須同時存在,缺一不可?
-
在拼接只有一個元素的元組的時候,例如我們課上舉的例題: >>> temp = (‘小甲魚’, ‘黑夜’, ‘迷途’, ‘小布丁’) 如果我想在“黑夜”和“迷途”之間插入“怡靜”,我們應該: >>> temp = temp[:2] + (‘怡靜’,) + temp[2:] 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'> >>>
總結:
- 元組:不可改變的
- 訪問元組的方式與列表無異
- 元組的標誌性符號不是小括號,而是逗號,所以元組中只包含一個元素時,需要在元素後面新增逗號
-
>>> temp = (1) >>> type(temp) <class 'int'> >>> temp = 1,2,3 >>> type(temp) <class 'tuple'> >>> 8 * (8) 64 >>> 8 * (8,) (8, 8, 8, 8, 8, 8, 8, 8) >>>
- 可以對元組進行操作的操作符:
拼接操作符:+
重複操作符:*
成員操作符:in/ not in
關係操作符:> <
邏輯操作符:and or -
拼接 >>> temp1 = (1,2,3) >>> temp2 = (4,5,6) >>> temp3 = temp1 + temp2 >>> temp3 (1, 2, 3, 4, 5, 6) >>> temp4 = temp3 + (7,8,) >>> temp4 (1, 2, 3, 4, 5, 6, 7, 8) 成員 >>> 2 in temp4 True 關係 >>> temp5 = (4,5,6) >>> temp6 = (5,4,3) >>> temp5 > temp6 False >>>
- 元組中的元素值是不允許修改的,但我們可以對元組進行連線組合,如下例項:
-
>>> temp = ("小雞","小鴨","小豬") >>> temp = temp[:2] + ("小甲魚",) + temp[2:] >>> temp ('小雞', '小鴨', '小甲魚', '小豬') >>>
- 元組中的元素值是不允許刪除的,但我們可以使用del語句來刪除整個元組,如下例項:
-
>>> del temp >>> temp Traceback (most recent call last): File "<pyshell#44>", line 1, in <module> temp NameError: name 'temp' is not defined >>>
實際在日常使用中,很少使用del去刪除整個元組,因為Python的回收機制會在這個元組不再被使用到的時候自動刪除。
- 元組的內建函式:
比較兩個元組的元素:operator.eq(temp1,temp2)
(前提需import operator)
計算元組元素個數:len(temp1)
返回元組中元素最大值:max(temp1)
返回元組中元素最小值:min(temp1)
將列表轉換為元組:tuple(list1)
- 元組的方法:
index:這個方法返回某個引數在元組中的位置
count:這個方法用來計算某個引數在元組中出現的次數
- 元組的內建函式: