Python(常用数据结构)

本文详细介绍了Python中的常见数据结构,包括序列、映射、集合、栈、队列和链表,是理解Python基础的重要内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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值
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值