1. 程式人生 > 其它 >Python學習日記(五)

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:這個方法用來計算某個引數在元組中出現的次數