序列
在python种,最基本的数据结构就是序列。Python中包含6种内建的序列,分别是:列表、元组、字符串、Unicode字符串、buffer对象和xrange对象。
通用序列操作
所有的序列类型都可以进行某些特定的操作,包括:索引(index),分片(slicing),加(adding),乘(multiplying)以及检查某个元素是否属于序列的成员,计算序列长度,找出最大元素和最小元素的内建函数。
1. 索引
正数索引从0开始,从左向右依次增加。
负数索引从-1开始,从右向左依次减小。
>>> a = [3, 4, 2, 5, 5]
>>> print(a[0])
3
>>> print(a[-1])
5
>>> 'Hello'[1]
'e'
2. 分片
用于访问一定范围内的元素,返回一个新的序列。
>>> numbers = [1,2,3,4,5,6,7,8,9,10]
>>> numbers[::-1]
[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
>>> numbers[8:3:-1]
[9, 8, 7, 6, 5]
3. 序列相加
通过使用加运算可以进行序列的链接操作。只有两种类型相同的序列才能进行加操作。
>>> [1,2,3] + [4,5,6]
[1, 2, 3, 4, 5, 6]
>>> [1,2,3] + 'string'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: can only concatenate list (not "str") to list
4. 乘法运算
用数字x乘以一个序列会生成新的序列,是原来序列的x次重复。
>>> 'python'*3
'pythonpythonpython'
>>> 3 * [1,2,3]
[1, 2, 3, 1, 2, 3, 1, 2, 3]
>>> sequence = [None] * 10
>>> sequence
[None, None, None, None, None, None, None, None, None, None]
5. 成员资格
使用in运算符检查一个值是否在序列中。
>>> permissions = 'rw'
>>> 'w' in permissions
True
>>> 'x' in permissions
False
database = [['albert', '1234'], ['dilbert', '4232'], ['smith', '7524'], ['jones', '9843']]
username = raw_input('User name:')
pin = raw_input('PIN code:')
print([username,pin])
if [username, pin] in database:
print "access granted"
else:
print "access denied"
6. 长度、最小值和最大值
内建函数len、min和max的使用。
>>> len(numbers)
6
>>> max(numbers)
6
>>> min(numbers)
2
>>> max(2,4,43,12)
43
>>> min(2,4)
2