python-數據類型之元組

元組是不能夠改變的序列,若是元組的元素包含列表、字典是支持修改操做的。
由於不可變因此元素的修改會報錯:算法

>>> tt=(3,4,5)
>>> type(tt)
<type 'tuple'>
>>> tt[2]=4

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment(#元素修改報錯)函數

(一)元組
(1)定義元組: 建立一個元組並給他賦值實際上跟建立一個列表並給它賦值徹底同樣,除了一點,只有一個元素的元組須要在元組分割符裏面加一個逗號(,)用以防止跟普通的分組操做符混淆.不要忘了它是一個工廠方法code

>>> a=()
>>> a=(1,)                 #若是不加,就表示a=(1)等價於1
>>> a     
(1,)
>>> a=2,3
>>> type(a)
<type 'tuple'>
>>> a
(2, 3)
>>> tuple("bar")        #工廠方法定義無組
('b', 'a', 'r')
>>> def f():           #函數的返回值是一個元組
>>>     return 2,3
>>> f()
(2, 3)

元組的成員:包括字典、列表、數字、字符:對象

>>> tuple22=(None,5,6,6,'ab',[1,2,3])
>>> a=(1,2,"a",["b",3],{1:2})
>>> type(a)
<type 'tuple'>
>>> for i in a:
...     print i
...
1
2
a
['b', 3]
{1: 2}
>>> a[3][0]="x"
>>> print a
(1, 2, 'a', ['x', 3], {1: 2})
>>> a[4][1]="x"
>>> print a
(1, 2, 'a', ['x', 3], {1: 'x'})

(2)訪問元組:元組的切片操做跟列表同樣,用方括號做爲切片操符([]),裏面寫上索引值或者索引範圍.索引

>>> aTuple = (123, 'abc', 4.56, ['inner', 'tuple'], 7-9j)
>>> aTuple[1:4]
('abc', 4.56, ['inner', 'tuple'])
>>> aTuple[:3]
(123, 'abc', 4.56)
>>> aTuple[3][1]
'tuple'

(3)更新元組:
跟數字和字符串同樣,元組也是不可變類型,就是說你不能更新或者改變元組的元素,咱們是經過現有字符串的片斷再構造一個新字符串的方式解決的,對元組一樣須要這樣.字符串

>>> aTuple = aTuple[0], aTuple[1], aTuple[-1]
>>> aTuple
(123, 'abc', (7-9j))
>>> tup1=(12,34.56)
>>> tup2=("abc","xyz")
>>> tup3=tup1+tup2
>>> tup3
(12, 34.56, 'abc', 'xyz')

(4)元組的刪除:刪除一個單獨的元組元素是不可能的,刪除一整個元組是能夠的。hash

>>> a=(1,[2,3],{4:5,5:6})
>>> del a[0]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'tuple' object doesn't support item deletion
>>> del a[1][1]
>>> print a
(1, [2], {4: 5, 5: 6})
>>> del a[2][4]
>>> print a
(1, [2], {5: 6})

(二)元組:標準類型操做符,序列類型操做符和內建函數
(1)建立,重複,鏈接操做it

>>> t = (['xyz', 123], 23, -103.4)
>>> t
(['xyz', 123], 23, -103.4)
>>> t*2
(['xyz', 123], 23, -103.4, ['xyz', 123], 23, -103.4)
>>> t=t+("free","easy")
>>> t
(['xyz', 123], 23, -103.4, 'free', 'easy')

(2)成員關係操做,切片操做io

>>> 23 in t
True
>>> 123 in t
False
>>> t[0][1]
123
>>> t[1:]
(23, -103.4, 'free', 'easy')

(3)內建函數ast

>>> str(t)
"(['xyz', 123], 23, -103.4, 'free', 'easy')"
>>> len(t)
5
>>> max(t)
'free'
>>> min(t)
-103.4
>>> cmp(t,(['xyz', 123], 23, -103.4, 'free', 'easy'))
0
>>> list(t)
[['xyz', 123], 23, -103.4, 'free', 'easy']

(4)操做符

>>> (4,2)<(3,5)
False
>>> (2,4)<(3,-1)
True
>>> (2,4)==(3,-1)
False
>>> (2,4)==(2,4)
True

(三)元組類型操做符和內建函數,內建方法:元組的特殊性
(1)全部的多對象的,逗號分隔的,沒有明確用符號定義的,好比說像用方括號表示列表和用圓括號表示元組同樣,等等這些集合默認的類型都是元組:

>>> 'abc', -4.24e93, 18+6.6j, 'xyz'
('abc', -4.24e+93, (18+6.6j), 'xyz')
>>> x,y=1,2
>>> x,y
(1, 2)

全部函數返回的多對象(不包括有符號封裝的)都是元組類型。注意,有符號封裝的多對象集合實際上是返回的一個單一的容器對象:

>>> def foo(x,y):
...     return x,y
>>> foo(4,5)
(4, 5)

>>> def foo1(x,y):
...     return (x,y)
>>> foo1(5,6)
(5, 6)

(2)做爲字典的關鍵字
不可變對象的值是不可改變的。這就意味着它們經過 hash 算法獲得的值老是一個值。這是做爲字典鍵值的一個必備條件。

>>> dic={(3,4):"welcome","a":333}
>>> dic
{'a': 333, (3, 4): 'welcome'}
相關文章
相關標籤/搜索