python--列表和元组

一、序列

序列是python中最基本的数据结构。序列中的每个元素被分配一个序号即元素的位置,或者称为索引。
其中,第一个索引是0。python还可以从最后一个元素开始计数,最后一个元素标记为-1。所以第一个索引是0可以向前或者向后计数。

python包含6种内建的序列:列表、元组、字符串、unicode字符串、buffer对象和xrange对象
这里主要介绍的是列表和元组。列表和元组的主要区别是:列表可以修改,元组不能。

二、通用序列操作

所有序列类型都可以进行某些特定的操作,这些操作包括索引(indexing)、分片(slicing)、加(adding)、乘(multiplying)以及检查某个元素是否属于序列的成员(成员资格)等等。

2.1 索引

序列中所有元素都是有编号的,从0开始递增。字符串就是一个由字符组成的序列。使用负数索引时,python会从右边,也就是从最后1个元素开始计数,最后1个元素的位置编号是-1。

字符串字面值或者其他字面量能够直接使用索引,不需要一个变量引用它们。例如:

>>> 'Hello'[2]
'e'

如果一个函数调用返回一个序列,那么也可以直接对返回结果进行索引操作,例如::

>>>fourth=raw_input('Year:  ')[3]
Year: 2005
>>>fourth
'5'

2.2 分片

索引可以访问单个元素,分片操作能够访问一定范围内的元素。
分片操作对于提取序列的一部分是很有用的。分片操作需要提供两个索引作为边界,第1个索引的元素是包含在分片内的,第2个不包含在分片内。

示例4:
>>>numbers=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>>numbers[3:6]
[3,4,5]

如果要访问最后3个元素应该怎么做,首先可以进行显示的操作

>>>numbers[7,10] #索引10指向的元素并不存在,但仍然可行
[7,8,9]

如果我们想要从列表的结尾开始计数应该怎么做呢?

>>> numbers[-3:-1]  #错误,输出[8, 9]
>>> numbers[-3:0] #错误,结果为空
#只要分片中最左边的索引比它右边的晚出现在序列中,
#结果就是空的序列
>>> numbers[-3:] #正确,输出结果[7,8,9]

这种情况也适用序列开始的元素

>>> numbers[:3] #输出[0,1,2]

实际上,如果要复制整个序列,可以将两个索引都置空

>>>numbers[:]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

进行分片的时候,还有一个参数步长,默认步长为1,也可以显示指定步长的大小。

>>> numbers[0:9:2]
[0, 2, 4, 6, 8]
>>> numbers[::4]
[0,4,8]

#步长不能为0,但可以是负数,此时分片从右到左提取元素
>>> numbers[8:3:-1]
[8, 7, 6, 5, 4]
>>> numbers[::-2]
[9, 1, 3, 5, 7]
>>> numbers[5::-2]
[5, 3, 1]
>>> numbers[:5:-2]
[9, 7]

总结:
1. 开始点的元素包括在结果之中,而结束点的元素不在分片之内。
2. 当使用一个负数作为步长的时候,必须让开始点大于结束点。
3. 对于正数步长,python会从左往右提取元素;负数步长则是从右往左。

2.3 序列相加

加运算符可以实现序列的连接。

>>> [1,2,3]+[4,5,6]
[1, 2, 3, 4, 5, 6]
>>> 'Hello,' + 'world!'
'Hello, world!'

注:两种相同类型的序列才能进行连接操作。字符串和序列无法连接到一起。

2.4 乘法

用数字x乘以一个序列会生成新的序列,新序列中原来的序列将被重复x次。

>>> 'python'*5
'pythonpythonpythonpythonpython'

空列表可以用[]表示,但是有时候我们需要一个值来代表空值,可以用None来表示,它表示“这里什么也没有“。如果想初始化一个长度为10的列表:

>>> sequence = [None]*10
>>> sequence
[None, None, None, None, None, None, None, None, None, None]

2.5 成员资格

运算符in检查某个条件是否为真,条件为真返回True,条件为假返回False。

>>> permission = 'rw'
>>> 'r' in permission
True
>>> 'x' in permission
False
#上面两行代码可以用来查看文件是否有可写和可执行权限。
>>> users = ['Jack', 'Lucy', 'Mike']
>>> raw_input['Enter your user name:'] in users
Enter your user name: Jack
True
#检查输入的用户名是不是在用户名列表,可以用在一些安全策略中
>>> subject = '$$$ Get rich now !!! $$$'
>>> '$$$' in subject
True
#可以作为垃圾邮件过滤器的一部分,
#可以检查字符串subject是否包含'$$$'

2.6 长度、最小值和最大值

len、min和max函数

>>> numbers=[100, 34, 687]
>>> len(numbers)
3
>>> max(numbers)
687
>>> min(numbers)
34

三、列表

方法是一个与某些对象有紧密联系的函数,对象可能是列表、数字,也可能是字符串或者其他类型的对象,一般来说,方法可以这样调用:

对象.方法(参数)

3.1 append

3.2 count

3.3 extend

3.4 index

3.5 insert

3.6 pop

3.7 remove

3.8 reverse

3.9 sort

3.10 高级排序

四、元组

元组与列表一样,也是一种序列,唯一的不同是元组不能修改。

4.1 tuple函数

4.2 基本元组操作

4.3 元组存在的意义

你可能感兴趣的:(python)