1、序列的索引从头位置以0开始计数,也可以从后面倒着计数,倒数第一个元素的索引为-1,倒数第二个元素的索引为-2,以此类推。
2、Python包括6种内建的序列:列表、元组、字符串、Unicode字符串、buffer对象和xrange对象。
3、列表可以修改,元组不能修改,几乎所有的情况下列表都可以代替元组,除了使用元组作为字典的键。
4、列表用[ ]包装,可以用列表表示数据库中一个人的信息,如下
>>> edward = ['Edward Gumby',42]
>>> john = ['John Smith', 50]
>>> database = [edward, john]
>>> database
[['Edward Gumby', 42], ['John Smith', 50]]
5、所有序列类型可进行的操作:索引、分片、加、乘以及检查是否属于序列的成员(成员资格),以及计算序列长度、找出最大元素和最小元素的内建函数。示例如下:
(1)索引
>>> greeting[0]
'h'
>>> greeting[-1]
'o'
直接对返回结果进行索引操作
>>> result=input('year: ')[3]
year: 2014
>>> result
'4'
(2)分片
>>> tag = 'http://www.python.org'
>>> tag[0:3]
'htt'
0:从第一个元素开始访问,3:最后一个分片元素的下一个位置,不包含在分片内
>>> tag[-3:-1]
'or'
注意:分片的索引,只要左边的索引比右边的晚出现在序列中,结果就是一个空的序列。
右边的索引值可以为空,如
>>> tag[-3:]
'org'
>>> tag[3:]
'p://www.python.org'
>>> tag[:3]
'htt'
>>>
如果需要复制整个序列
>>> tag[:]
'http://www.python.org'
指出步长,以下是每隔2个元素访问数组,其中最后一个2表示步长
>>> array = [1,2,3,4,5,6,7,8,9,10]
>>> array[1:10:2]
[2, 4, 6, 8, 10]
当步长为负数时,分片从右到左提取元素,
>>> array[8:3:-1]
[9, 8, 7, 6, 5]
其他
>>> array[0:10:-2]
[]
>>> array[::-2]
[10, 8, 6, 4, 2]
>>> array[5::-2]
[6, 4, 2]
>>> array[:5:-2]
[10, 8]
(3)序列相加
>>> [1,2,3] + [4,5,6]
[1, 2, 3, 4, 5, 6]
>>> 'hello,'+'world'
'hello,world'
(4)序列相乘
>>> 5*'#python'
'#python#python#python#python#python'
>>> [3] * 10
[3, 3, 3, 3, 3, 3, 3, 3, 3, 3]
设置长度为10的空序列(None)
>>> null_sequence = [None]*10
>>> null_sequence
[None, None, None, None, None, None, None, None, None, None]
(5)成员资格
>>> test = 'rw'
>>> 'r' in test
True
>>> users = ['aaa', 'bbb', 'ccc']
>>> 'ddd' in users
False
检查用户名和PIN码
>>> #check username and pin
>>> database = [
['albert','1234'],['dilbert','4242'],['smith','5412'],['jones','9843']
]
>>> username = input('username: ')
username: smith
>>> pin= input("pin: ")
pin: 5412
>>> if[username,pin] in database: print ('Access granted')
Access granted
(6)序列长度,最大值元素,最小值元素
>>> number = [11,22,33]
>>> len(number)
3
>>> max(number)
33
>>> min(number)
11
6、list函数。因为字符串不能像列表一样被修改,有时需要根据字符串创建列表
>>> list('hello')
['h', 'e', 'l', 'l', 'o']
7、基本的列表操作
(1)修改元素
>>> arr= [0,0,0]
>>> arr[1] = 1
>>> arr
[0, 1, 0]
(2)删除元素
>>> del arr[0]
>>> arr
[1, 0]
(3)分片赋值
>>> name = list('pythxx')
>>> name
['p', 'y', 't', 'h', 'x', 'x']
>>> name[-2:]=list('on')
>>> name
['p', 'y', 't', 'h', 'o', 'n']
插入
>>> numbers = [1,5]
>>> numbers[1:1]=[2,3,4]
>>> numbers
[1, 2, 3, 4, 5]
8、列表方法
(1)append
>>> numbers
[1, 2, 3, 4, 5]
>>> numbers.append(6)
>>> numbers
[1, 2, 3, 4, 5, 6]
(2)count
>>> numbers.count(4)
1
(3)extend,效率比连接符 +效率要高
>>> a = [1,2,3]
>>> b = [4,5,6]
>>> a.extend(b)
>>> a
[1, 2, 3, 4, 5, 6]
(4)index
>>> a
[1, 2, 3, 4, 5, 6]
>>> a.index(4)
3
(5)insert, 将对象插入列表中
>>> a.insert(1,'test')
>>> a
[1, 'test', 2, 3, 4, 5, 6]
(6)pop,一般弹出最后一个元素
>>> a.pop()
6
(7)remove,移除列表中第一个匹配的元素
>>> a
[1, 'test', 2, 3, 4, 5]
>>> a.remove('test')
>>> a
[1, 2, 3, 4, 5]
(8)reverse。反转列表
>>> a
[1, 2, 3, 4, 5]
>>> a.reverse
<built-in method reverse of list object at 0x02295210>
>>> a.reverse()
>>> a
[5, 4, 3, 2, 1]
(9)sort。排序,默认是升序排序
>>> a
[5, 4, 3, 2, 1]
>>> a.sort()
>>> a
[1, 2, 3, 4, 5]
如果要复制到另一个列表去排序,可以采用以下方法 y=x[:]
>>> x = [5,4,3,2,1]
>>> x
[5, 4, 3, 2, 1]
>>> y = x[:]
>>> y
[5, 4, 3, 2, 1]
>>> y.sort()
>>> y
[1, 2, 3, 4, 5]
>>> x
[5, 4, 3, 2, 1]
或者
>>> x
[5, 4, 3, 2, 1]
>>> y=sorted(x)
>>> y
[1, 2, 3, 4, 5]
>>> x
[5, 4, 3, 2, 1]
注:sorted可以对任何序列排序,总是返回一个列表
10、高级排序
>>> x = [4,6,2,1,7,9]
>>> x.sort(reverse=True)
>>> x
[9, 7, 6, 4, 2, 1]
按key的长度排序
>>> strings = ['aaa', 'bb', 'c']
>>> strings.sort(key=len)
>>> strings
['c', 'bb', 'aaa']
9、元组:不可变序列,用()包装
(1)数组创建比较简单,但是要注意即使只有一个元素时候,也需要添加()
>>> 1,2,3
(1, 2, 3)
>>> (1,2,3)
(1, 2, 3)
>>> ()
()
>>> 42
42
>>> 42,
(42,)
>>> (42,)
(42,)
注意:
>>> 3*(2+2)
12
>>> 3*(2+2,)
(4, 4, 4)
(2)tuple函数,跟list()函数功能相似,将一个序列作为参数并把它转换为元组, 如果参数是元组,则原样返回。
>>> tuple([1,2,3])
(1, 2, 3)
>>> tuple((1,2,3))
(1, 2, 3)