python中最基本的数据结构就是序列。
python中有6中内建的序列,最常用的是列表和元组,其他的还有字符串,Unicode字符串,buffer对象和xrange对象。
列表和元组的区别在于:列表可以修改,但是元组不能修改。
可以用序列表示数据库中的个人信息:
>>> >>> fp = [18,'male']
同时序列也可以包含其他的序列:
>>> wj = [18,'female']
>>> name = [fp,wj]
所有的序列都可以进行的操作:
索引,分片,加,乘法,以及检查某个元素是否属于序列的成员。除此之外还有内建函数:
计算序列的长度,找出最大的元素,最小的元素
分片:
>>> tag = '<a href="http://www.python.org">Python web site</a>'
>>> tag[9:30]#通过冒号隔开的两个索引实现
'http://www.python.org'
>>> tag[-10:-1]#从后向前索引
'b site</a'
>>> tag[-20:]#直接访问到最后一个元素
'>Python web site</a>'
>>> tag[::4]#加入步长
'<r"pwporPoei/'
相加:
>>> [1,2,3]+[4,5]
[1, 2, 3, 4, 5]
#使用加法可以对序列进行连接操作
>>> [1,2,3]+"hello"
Traceback (most recent call last):
File "<pyshell#2>", line 1, in <module>
[1,2,3]+"hello"
TypeError: can only concatenate list (not "str") to list
#列表和字符串无法连接在一起
乘法:
>>> "python"*5
'pythonpythonpythonpythonpython'
#序列被重复五次
>>> [None]
[None]
#空表,长度为1
>>> [None]*10
[None, None, None, None, None, None, None, None, None, None]
#创建长度为10的空表
成员资格检查:
>>> num = [1,2,3]
>>> 1 in num
True
长度、最小值、最大值
>>> len(num)
3
>>> max(num)
3
>>> min(num)
1
list操作:
>>> list('hello')
['h', 'e', 'l', 'l', 'o']#根据字符串创建列表
列表可以使用所有的序列操作,但是列表是可以修改的(对比于字符串和元组)。
1.改变列表
>>> x = [1,2,3]
>>> x[1] = 0#像c++中的数组一样访问
>>> x
[1, 0, 3]
#但是不能为一个不存在的元素赋值
2.删除元素 del
>>> names = ["fp1","fp2","fp3"]
>>> del names[1]
>>> names
['fp1', 'fp3']
3.分片赋值
>>> name = list("fffupeng")#根据字符串创建列表
>>> name[3:] = list("oo")#不等长地分片替换
>>> name
['f', 'f', 'f', 'o', 'o']
>>> numbers = [1,4]
>>> numbers[1:1] = [2,3]#利用分片操作进行list插入,同样可以用来删除
>>> numbers
[1, 2, 3, 4]
list方法:
1. list.append()
>>> lst = [1,2,3]
>>> lst.append(4)#末尾追加新的对象
>>> lst
[1, 2, 3, 4]
2.list.count()
>>> lst.count(1)#统计1在列表中出现的次数
1
3.list.extend() 在末尾一次性添加另一个程序中的多个值,可以用新的列表扩张原有的列表
>>> a = [1,2,3]
>>> b = [4,5,6]
>>> a.extend(b)#相当于将两个列表相加
>>> a
[1, 2, 3, 4, 5, 6]
#这与a+b有何不同呢。a+_b返回一个全新的列表,而这已经修改了a的值,效率比较高
>>> a = [1,2,3]
>>> b = [4,5]
>>> a[len(a):] = b#同样可以用插入操作实现,但是可读性不强
>>> a
[1, 2, 3, 4, 5]
4.index 找出list中与某个值第一个匹配的索引
>>> a = [1,2,3,4]
>>> a.index(2)
1
#如果搜素不到就会发现异常
5.insert
>>> a = [1,3,4]
>>> a.insert(1,2)#在第一个位置插入2
>>> a
[1, 2, 3, 4]
6。pop
>>> a = [1,2,3,4]
>>> a.pop()#默认删除最后一个元素,还能返回删除的值
4
>>> a
[1, 2, 3]
6.remove 移出列表中某个值第一个匹配的项,修改了列表并没有返回值
>>> a=[1, 2, 3]
>>> a.remove(2)
>>> a
[1, 3]
7.reverse 将列表中的元素反放
>>> a = [1,2,3]
>>> a.reverse()
>>> a
[3, 2, 1]
8.sort 对原位置排序,改变了列表
>>> x = [3,7,5,2,1,3]
>>> x.sort()
>>> x
[1, 2, 3, 3, 5, 7]
高级排序:希望元素按照特定的方式进行排序,可以通过compare(x,y)的形式自定义比较函数。
compare(x,y)会在x < y返回负数,x>y返回正数,x=y返回0
cmp\key\reverse参数都可以用与sorted函数,提供自定义比较函数
元组: 不可变序列,用圆括号,
>>> (1,)#一个元素的实现加一个逗号
(1,)
tuple:将一个序列作为参数并把他转为元组
>>> tuple([1,2,3])
(1, 2, 3)