Python之Tuple


1、tuple是另一種有序的列表,中文翻譯為"元祖"。tuple和list非常相似,但是tuple一旦創建之后就不能

在修改了,創建tuple如下所示:

     tup = ('Adam', 'Make', 'Paul')

創建tuple和創建list唯一不同之處是用( )替代了[ ]。

 

2、創建單元素tuple

tuple和list一樣,可以包含 0 個、1個和任意多個元素。

       tup = (1,);     # 創建了一個只有一個元素1的tuple

不可直接 tup = (1)。因為()既可以表示tuple,又可以作為括號表示運算時的優先級,結果 (1) 被Python解

釋器計算出結果 1,導致我們得到的不是tuple,而是整數 1。

正是因為用()定義單元素的tuple有歧義,所以 Python 規定,單元素 tuple 要多加一個逗號“,”,這樣就

避免了歧義。

多元素 tuple 加不加這個額外的","效果是一樣的。

 

3、創建"可變"tuple

前面說了tuple一旦創建就不能修改。現在,我們來看一個"可變"的tuple:

1 t = ('a', 'b', ['A', 'B'])
2 list = t[2]
3 list[0] = 'X'
4 lisy[1] = 'Y'
5 
6 print t
7 
8 ('a', 'b', ['X', 'Y'])

注意到 t 有 3 個元素:'a','b'和一個list:['A', 'B']。list作為一個整體是tuple的第3個元素。list對象可以

通過 t[2] 拿到,然后可以對list進行修改。

 

不是說tuple一旦定義后就不可變了嗎?怎么現在又變了?

別急,我們先看看定義的時候tuple包含的3個元素:

 

當我們把list的元素'A'和'B'修改為'X'和'Y'后,tuple變為:

表面上看,tuple的元素確實變了,但其實變的不是 tuple 的元素,而是list的元素。tuple一開始指向的

list並沒有改成別的list,所以,tuple所謂的“不變”是說,tuple的每個元素,指向永遠不變。即指

向'a',就不能改成指向'b',指向一個list,就不能改成指向其他對象,但指向的這個list本身是可變的!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM