写给小白的Python之008:数据类型之元组

导读:

1.元组

 

元组(tuple)与列表类似,不同之处在于元组的元素不能修改。元组写在小括号里,元素之间用逗号隔开。元组中的元素类型也可以不相同:

>>> a = (1991, 2014, 'physics', 'math')
>>> print(a, type(a), len(a))
(1991, 2014, 'physics', 'math') <class 'tuple'> 4

创建空元组:

info_tuple = ()

元组中只包含一个元素时,需要在元素后面添加逗号:

info_tuple = (50, )

与字符串类似,元组可以被索引且下标索引从0开始,也可以进行截取/切片。其实,可以把字符串看作一种特殊的元组。

>>> tup = (1, 2, 3, 4, 5, 6)
>>> print(tup[0], tup[1:5])
1 (2, 3, 4, 5)

>>> tup[0] = 11 # 修改元组元素的操作是非法的

虽然tuple的元素不可改变,但它可以包含可变的对象,比如list列表。

>>>a=(1,2,3,[1,2,['a','b','c']])
>>>a[3][2][1]
'b'

>>>a[3][2]='4'
>>>print(a)
(1,2,3,[1,2,'4'])

>>>a[2]='3'
报错

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

>>>t2 = ('a',) + t[1:]
>>>t2
('a', 2, 3)

>>>(1,2)  is (1,2)
False

元组作为返回值:

>>> def swap(x, y):
x, y = y, x

>>> a = 1
>>> b = 2
>>> swap(a, b)
>>> print a, b
1 2

并没有交换, 因为x和a是同一个值的别名, 在函数swap中改变x的值后, x和a就彻底没有任何关系了。 所以x的改变不能影响变量a。

 在Python中如果变量具有相同的值, 就可以认为这些变量是同一个值的别名。 也就是这些变量指向同一个值。 这样做的好处也许是节省了内存空间。 但是如果某一个变量改变了它自己的值, 那么解释器就开辟出新内存空间存储这个变量的值。 这个变量就指向新的值。

 

元组的内置函数count, index

index和count与字符串和列表中的用法相同。

>>> a = ('a', 'b', 'c', 'a', 'b')
>>> a.index('a', 1, 3) # 注意是左闭右开区间
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: tuple.index(x): x not in tuple

>>> a.index('a', 1, 4)
3

>>> a.count('b')
2

>>> a.count('d')
0

另外,元组也支持用+操作符:

>>> tup1, tup2 = (1, 2, 3), (4, 5, 6)
>>> print(tup1+tup2)
(1, 2, 3, 4, 5, 6)

元组遍历

# for 循环内部使用的变量 in 元组

for item in info:

    循环内部针对元组元素进行操作

    print(item)

在 Python 中,可以使用 for 循环遍历所有非数字型类型的变量:列表、元组、字典 以及 字符串。

 

应用场景

尽管可以使用for in遍历元组,但是在开发中,除非 能够确认元组中的数据类型,否则针对元组的循环遍历需求并不是很多。更多的应用场景是:

1.函数的 参数  返回值,一个函数可以接收 任意多个参数,或者 一次返回多个数据

2.格式字符串,格式化字符串后面的 () 本质上就是一个元组;

3.让列表不可以被修改,以保护数据安全。

info = ("zhangsan", 18)

print("%s 的年龄是 %d" % info)

 

要点:

1、与字符串一样,元组的元素不能修改。

2、元组也可以被索引和切片,方法一样。

3、注意构造包含0或1个元素的元组的特殊语法规则。

4、元组也可以使用+操作符进行拼接。

5、通常,元组中保存的数据类型是不同的。

6、string、list和tuple都属于sequence(序列)。

 

posted @ 2018-04-05 14:36  salmond  阅读(292)  评论(0编辑  收藏  举报