Python基础-内建数据结构、函数及文件
3.1 数据结构和序列
Python 的数据结构简单但强大。精通这些数据结构是成为优秀Python编程者的必要条件。
3.1.1元组
元组是一种固定长度、不可变的Python对象序列。创建元组最简单的办法就是用逗号分隔序列值。
In [1]: tup = 4, 5, 6
In [2]: tup
Out [2]: (4, 5, 6)
当你通过更复杂的表达式来定义元组时,通常需要用括号将值包起来,例如下面这个例子。生成了元素是元组的元组:
In [3]: nested_tup = (4, 5, 6), (7, 8)
In [4]: nested_tup
Out [5]: ((4, 5, 6), (7, 8))
你可以使用tuple函数将任意序列或迭代器转换为元组:
In [5]: tuple([4, 0, 2])
Out [5]: (4, 0, 2)
In [5]: tuple([4, 0, 2])
Out [5]: (4, 0, 2)
In [6]: tup = tuple('string')
In [7]: tup = tuple('string')
Out [7]: ('s', 't', 'r', 'i', 'n', 'g')
元组的元素可以通过中括号[ ]来获取,在大多数序列类型中都可以使用这个方法。和C、C++、Java以及很多其他语言一样,Python中的序列索引是从0开始的:
In [8]: tup[0]
Out [8]: 's'
虽然对象元组中存储的对象其自身是可变的,但是元组一旦创建,各个位置上的对象是无法被修改的:
In [9]: tup = tuple(['foo', [1, 2], True])
In [10]: tup[2] = False
-------------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-10-c7308343b841> in <module>()
----> 1 tup<2> = False
TypeError: 'tuple' object does not support item assignment
如果元组中的一个对象是可变的,例如列表,你可以在它内部进行修改:
In [11]: tup[1].append(3)
In [12]: tup
Out [12]: ('foo', [1, 2, 3], True)
可以使用+号连接元组来生成更长的元组:
In [13]: (4, None, 'foo') + (6, 0) + ('bar',)
Out [13]: (4, None, 'foo', 6, 0, 'bar')
将元组乘以整数,则会和列表一样,生成含有多份拷贝的元组:
In [14]: ('foo', 'bar') * 4
Out [14]: ('foo', 'bar', 'foo', 'bar', 'foo', 'bar', 'foo', 'bar')