1. 序列:
序列中的每个元素都有自己的编号。Python中有6种内建的序列。其中列表和元组是最常
见的类型。其他包括字符串、Unicode字符串、buffer对象和xrange对象。
区别:列表是可变的,字符串和元组不可变。
1.1 列表:
1.1.1 列表常用操作:
"-".join(k) //使用“”中的字符将列表中的元素连接起来,可以为空字符串
i.append("a") //在列表末尾插入字符串“a”
i.append(j) //将列表j作为一个元素插入到列表i末尾
i.extend(j) //合并列表i和j
i.insert(0,"a") //在列表第0位插入字符串“a”,第0位及后面的元素向后移动一位
if char in i //in为判断char字符串是否在列表i中,not in判断是否不存在列表中
i.index("a") //查找列表中第一个字符串“a”所在位置
i.count("a") //查找列表中字符串“a”出现的次数
del i[0] //删除列表中第0位元素
i.pop() //删除并返回列表的最后一个元素
i.remove("a") //删除列表中的元素“a”
i.reverse() //逆序排列列表
i.sort() //由小到大排序列表,降序排序可在括号中加参数reverse=True
cmp(list1, list2) //比较两个列表的元素
len(list) //列表元素个数
max(list) //返回列表元素最大值
min(list) //返回列表元素最小值
list(seq) //将元组转换为列表
1.1.2 列表的优点:
占用空间小,浪费内存很少。(以时间换空间)
1.1.3 列表的缺点:
查找和插入的时间随着元素的增加而增加。
1.2 元组:
1.2.1 元组常用操作:
tuple=(a,"a",1) //元祖不可以修改,只支持查看,定义好后不能进行修改,但可
以修改元祖内的列表元素的内容,元组中只包含一个元素时,需要在元素后面添加逗
号,否则括号会被当作运算符使用。
len(tup1) //返回元组中元素的个数
tup1[1:5] //返回元组tup1下标为1-4的元素(包头不包尾)
tup3 = tup1 + tup2 //将tup1和tup2两个元组连接起来生成一个新的元组
tup2 = tup1 * 5 //将tup1中的元素复制5遍生成一个新的元组
3 in tup1 //判断3是否包含于元组tup1中,返回布尔类型
for i in tup1 //返回tup1中的每个元素(元组可迭代)
max(tup1) //返回元组中的最大元素
min(tup1) //返回元组中的最小元素
tuple(seq) //将列表转换为元组
1.2.2 元组的优点:
占用内存小,处理速度快。
1.2.3 元组的应用:
交换赋值:
a = 1
b = 2
b, a = a, b
print(a,b)
原理:将a, b封装为一个元组,b, a = (1, 2),b = (1, 2)[0],a = (1, 2)[1]
1.3 字符串:
1.3.1 字符串常用操作:
i.find("abc") //查找i中是否存在“abc”,若存在,返回第一个“abc”在列表中的位
置,若不存在,则返回-1
i.rfind("abc") //从右边开始查找
i.index("abc") //用法同find,当不存在时报错
i.count("abc") //返回列表中“abc”的个数
i.replace("a","z",2) //替换前两个a为z
i.split("-",2) //字符串切割,“”内为分隔标志字符,2为将前两部分单独分割,分
隔后不保留分割标识字符,若“”内不指定分割标识字符,则将所有的符号及空格看作标识字符
i.partition("-") //字符串切割,保留分割标识符
i.capitalize() //字符串首字母大写
i.title() //字符串单词首字母大写
i.startswith("a") //判断字符串是否以“”内字符串开头,返回布尔类型
i.endswith("a") //判断字符串是否以“”内字符串结尾,返回布尔类型
i.upper() //将字符串所有的小写变成大写
i.lower() //将字符串所有的大写变成小写
i.ljust(100) //在100像素宽度内左对齐字符串
i.rjust(100) //在100像素宽度内右对齐字符串
i.center(100) //在100像素宽度内居中对齐字符串
i.strip() //删除左右两端的空白字符,若要指定左右,前面加上l或r
i.isalpha() //判断字符串是否只由字母组成,返回布尔类型
i.isdigit() //判断字符串是否只由数字组成
i.isalnum() //判断字符串是否由字母和数字组成
i.isspace() //判断字符串是否只由空格组成
2. 映射:
映射中的每个元素都有一个名字,这个名字专业的名称叫键。字典(也叫散列表)是Python中唯一内建的映射类型。字典的键可以是数字、字符串或者是元组,键必须唯一。在Python中,数字、字符串和元组都被设计成不可变类型,而常见的列表以及集合(set)都是可变的,所以列表和集合不能作为字典的键。键可以为任何不可变类型,这正是Python中的字典最强大的地方。
2.1 字典:
2.1.1 字典常用操作:
dict={key1:value1,key2:value2} //创建字典(字典中的键和值成对出现,键不
可以重复,值可以重复)
dict.get("age",0) //使用get方法返回键对应的值,0表示当键不存在时返
回0,直接访问不存在的键时报错
dict["age"] //返回age键对应的值
dict["age"]=1 //修改age键对应的值为1,若不存在age键,则添加age
键,且值为1
del dict["age"] //删除age键和其对应的值
dict.keys() //返回dict中的键
dict.values() //返回dict中的值
dict.items() //返回dict中的键和值
for name,age in dict.items() //返回dict中的键值对
2.1.2 字典的优点:
查找和插入的速度极快,不会随着key的增加而变慢。
2.1.3 字典的缺点:
需要占用大量的内存,内存浪费多。
3. 集合:
集合(set)是一个无序的不重复元素序列。可以使用大括号 { } 或者 set() 函数创建集合,
创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
3.1 集合:
3.1.1 集合常用操作:
s = set(('12', '15', '98')) 创建集合{'98', '15', '12'}
s = set('121598') 创建集合{'8', '5', '9', '2', '1'}
s = {'12', '15', '98'} 创建集合{'98', '12', '15'}
'12' in s 判断'12'是否在集合s中
s1 - s2 包含于集合s1而不包含于集合s2的元素,返回值为集合
s1 | s2 集合s1和集合s2中的所有元素,返回值为集合
s1 ^ s2 不同时包含于集合s1和集合s2的元素,返回值为集合
s1 & s2 同时包含于集合s1和集合s2的元素,返回值为集合
{x for x in '12589485' if x not in '159'} 使用推导式创建集合
s.add(x) 将元素x添加到集合s中,add参数只能为字符串、整型
s.update(x) 将元素x添加到集合s中,update参数可以为列表、元组、字典。可一次传
入多个参数,用逗号隔开。当传入参数为字典时,将字典的键作为参数
s.remove( x ) 将元素x从集合s中删除,当元素x不存在时报错
s.discard( x ) 将元素x从集合s中删除,当元素x不存在时不报错
s.pop() 随机删除集合s中的一个元素,在交互模式,pop 是删除集合的第一个元素
(排序后的集合的第一个元素)。
len(s) 计算集合s中元素的个数
s.clear() 清空集合
4. 栈、队列:
栈:先进后出
队列:先进后出
4.1 栈的实现:
4.1.1 使用列表实现:
创建栈:stack = []
入栈:stack.append()
出栈:stack.pop()
5. 链表:
链表是一组
结点(也可以叫节点或元素),每一个结点有两个域,左边部份叫值域,用于存放用户数据;右边叫指针域,一般是存储着到下一个元素的指针
head结点,head是一个特殊的结节,head结点永远指向第一个结点
tail结点,tail结点也是一个特殊的结点,tail结点永远指向最后一个节点
None,链表中最后一个结点指针域的指针指向None值