天天看點

Python3 元組

Python 的元組與清單類似,不同之處在于元組的元素不能修改。

元組使用小括号 ( ),清單使用方括号 [ ]。

元組建立很簡單,隻需要在括号中添加元素,并使用逗号隔開即可。

Python3 元組

>>> tup1 = ('Google', 'Runoob', 1997, 2000)

>>> tup2 = (1, 2, 3, 4, 5 )

>>> tup3 = "a", "b", "c", "d"   #  不需要括号也可以

>>> type(tup3)

<class 'tuple'>

建立空元組

元組中隻包含一個元素時,需要在元素後面添加逗号 , ,否則括号會被當作運算符使用:

>>> tup1 = (50)

>>> type(tup1)     # 不加逗号,類型為整型

<class 'int'>

>>> tup1 = (50,)

>>> type(tup1)     # 加上逗号,類型為元組

元組與字元串類似,下标索引從 0 開始,可以進行截取,組合等。

Python3 元組

元組可以使用下标索引來通路元組中的值,如下執行個體:

#!/usr/bin/python3

tup1 = ('Google', 'Runoob', 1997, 2000)

tup2 = (1, 2, 3, 4, 5, 6, 7 )

print ("tup1[0]: ", tup1[0])

print ("tup2[1:5]: ", tup2[1:5])

以上執行個體輸出結果:

元組中的元素值是不允許修改的,但我們可以對元組進行連接配接組合,如下執行個體:

tup1 = (12, 34.56)

tup2 = ('abc', 'xyz')

# 以下修改元組元素操作是非法的。

# tup1[0] = 100

# 建立一個新的元組

tup3 = tup1 + tup2

print (tup3)

元組中的元素值是不允許删除的,但我們可以使用del語句來删除整個元組,如下執行個體:

tup = ('Google', 'Runoob', 1997, 2000)

print (tup)

del tup

print ("删除後的元組 tup : ")

以上執行個體元組被删除後,輸出變量會有異常資訊,輸出如下所示:

與字元串一樣,元組之間可以使用 + 号和 * 号進行運算。這就意味着他們可以組合和複制,運算後會生成一個新的元組。

Python 表達式

結果

描述

len((1, 2, 3))

3

計算元素個數

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

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

連接配接

('Hi!',) * 4

('Hi!', 'Hi!', 'Hi!', 'Hi!')

複制

3 in (1, 2, 3)

True

元素是否存在

for x in (1, 2, 3): print (x,)

1 2 3

疊代

因為元組也是一個序列,是以我們可以通路元組中的指定位置的元素,也可以截取索引中的一段元素,如下所示:

元組:

Python3 元組

tup[1]

'Runoob'

讀取第二個元素

tup[-2]

'Weibo'

反向讀取,讀取倒數第二個元素

tup[1:]

('Runoob', 'Taobao', 'Wiki', 'Weibo', 'Weixin')

截取元素,從第二個開始後的所有元素。

tup[1:4]

('Runoob', 'Taobao', 'Wiki')

截取元素,從第二個開始到第四個元素(索引為 3)。

運作執行個體如下:

>>> tup = ('Google', 'Runoob', 'Taobao', 'Wiki', 'Weibo','Weixin')

>>> tup[1]

>>> tup[-2]

>>> tup[1:]

>>> tup[1:4]

>>>

Python元組包含了以下内置函數

序号

方法及描述

執行個體

1

len(tuple)

計算元組元素個數。

2

max(tuple)

傳回元組中元素最大值。

min(tuple)

傳回元組中元素最小值。

4

tuple(iterable)

将可疊代系列轉換為元組。

所謂元組的不可變指的是元組所指向的記憶體中的内容不可變。

>>> tup = ('r', 'u', 'n', 'o', 'o', 'b')

>>> tup[0] = 'g'     # 不支援修改元素

Traceback (most recent call last):

  File "<stdin>", line 1, in <module>

TypeError: 'tuple' object does not support item assignment

>>> id(tup)     # 檢視記憶體位址

4440687904

>>> tup = (1,2,3)

>>> id(tup)

4441088800    # 記憶體位址不一樣了

從以上執行個體可以看出,重新指派的元組 tup,綁定到新的對象了,不是修改了原來的對象。