1. 程式人生 > >python程式設計入門之五:元組

python程式設計入門之五:元組

第五章 元組的使用

我們在上一章已經學習使用了列表,大家可能感覺列表真是一個神奇的東西,可以幫助我們完成很多的工作,列表的方法也是多得多,以為學好了列表,就學好了python,雖然列表很重要,但它也僅僅是python的冰山一角。所以這一章我們來學習元組,一個被戴上了枷鎖的列表----元組。

5.1 元組的建立和訪問

首先先讓大家知道為什麼元組被稱為被戴上枷鎖的列表,因為元組的性質和用法和列表差不多,唯一的兩個不同就是1,元組不可以增刪改;2,建立元組要用小括號()。元組的英文名為tuple,先看一下是如何進行建立和訪問的吧,注意她和列表的區別。

tuple1 = (1, 2, 3, "Hopes", "Alex")
print(tuple1)
print(tuple1[3])  #這裡要注意,儘管元組的建立使用的小括號,但訪問某個元素還是要用中括號
print(tuple[2:])  # 同樣可以用切片

結果:

(1, 2, 3, 'Hopes', 'Alex')
Hopes
(3, 'Hopes', 'Alex')

結果很明顯,元組的建立和訪問元素和列表是幾乎一樣的,那如果我們要嘗試一下增刪改呢? 我們先用dir方法將元組的內建方法列印一下看看。

print(dir(tuple))

結果:

['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__',
 '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__',
  '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__',
   '__reduce__', '__reduce_ex__', '__repr__', '__rmul__', '__setattr__', '__sizeof__', '__str__',
    '__subclasshook__', 'count', 'index']

我們看一下tuple的內建方法,是不是根本就沒有增刪改的方法,涉及到像那種兩組下劃線形式的“魔法方法”我們以後會講到,畢竟不是太容易。但我們還是看到了tuple僅有的兩種常規方法–count和index,當然,我們在講列表的時候已經接觸過這兩種方法了,讓我們打印出來再回憶一下。

tuple1 = (1, 3, 1, 5, "Hopes", "Alex")
print(tuple1.index('Hopes'))
print(tuple1.count(1))

結果:

4
2

是不是已經回憶起來了,count是用來統計某個元素出現的次數,index是查詢某個元素的索引值。元組的常規方法就這麼多,它顯然要比列表要簡單許多,而且它是不可以更改元素的,所以在某些方面是比較安全的。 那如果我們遇到了特殊情況,確實要修改元素怎麼辦呢?

5.2 元組的修改和刪除

如果有人較真問起來,不是說好了元組不能修改的嗎?你在這裡又給我講修改,你TM是在逗我?嗯~怎麼說呢,其實這個“修改”並不是真正意義上的修改,而應該是通過拼接的方式來重新構建一個新元組,是怎麼做的呢?看下面的程式碼。

tupleOld = (1, 2, 3, 5, 6)
tupleNew = tupleOld[:2] + (4,) + tupleOld[2:]
print(tupleNew)
print(tupleOld)

結果:

(1, 2, 4, 3, 5, 6)
(1, 2, 3, 5, 6)

所以這裡說的修改其實就是用之前的列表來重新拼接一個新元組,而且還要注意這裡我們拼接的時候(4,),這個單獨元素後面是需要加一個逗號的,這樣才能表明這是一個元組,不然會報錯。

那元組的刪除是怎麼回事呢,這個刪除其實並不能刪除元組裡的特定元素,因為元組的方法本來就沒有刪除這個BIF,所以我們這裡說的刪除是刪除整個元組,對,你沒聽錯,就是全部刪掉,同樣很簡單,利用我們的del方法。

tuple1 = (1, 3, 1, 5, "Hopes", "Alex")
del(tuple1)
print(tuple1)

結果:

NameError: name 'tuple1' is not defined

報錯說我們並沒有定義這個“tuple1”,所以我們刪除成功了。

5.3 元組和列表的補充用法

我們已經學習了列表和元組的基本用法,但這些還僅僅不夠,下面我們再來介紹一些有趣的用法。 (1)多重列表和多重元組 多重的意思也就是,列表裡面還包含列表,元組裡面還包含元組,或者列表裡面包含元組,元組裡麵包含列表,這些用法都是可行的,而且可以多重包含,下面我們來看一下多重列表和多重元組是怎麼建立和呼叫的。

list1 = [1, 2, 3, [4, 5], 6, 7]
print(list1[3][1])

tuple1 = (1, 3, 5, (7, 9))
print(tuple1[3][0])

結果:

5
7

所以可以看得出,如果要訪問列表裡的列表或者元組裡的元組,只需要用多箇中括號來定位就可以了,其實也並沒有那麼麻煩。

(2)判斷元素是否在列表或元組內 如果要判斷某個元素是否存在於列表元組內,python提供了一個非常人性化的方式:in /not in 方式

list1 = [1, 2, 3, [4, 5], 6, 7]
tuple1 = (1, 3, 5, (7, 9))

print(3 in list1)  # 判斷3是否在list內
print(4 in list1[3])  # 注意如果要判斷內層的元素,就必須將列表定義到內層
print(4 in list1)  # 沒有具體到內層
print(5 in tuple1)
print(9 in tuple1[3])

結果:

True
True
False
True
True

關於列表和元組就先說這些,以後的學習中會大量的用到這兩個型別,所以一定要多多積累,多多複習。