元组是不能够改变的序列,若是元组的元素包含列表、字典是支持修改操做的。
由于不可变因此元素的修改会报错:算法
>>> 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'}