尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

python学习笔记4 --Python的容器类型

python学习笔记4 --Python的容器类型 第5章 Python的容器类型5.1 容器概述Python 提供了多种内置的容器类型,用于存储和组织数据。内置的主要容器类型有:–列表list、元组tuple、字符串str、集合set、字典dict等,另外Python还在collections模块中提供了更多容器类型,例如:双端队列deque等。5.1.1 常见容器类型常见容器类型区别:类型示例可变性有序性重复元素使用场景列表(list)[1, 2, 3]可变有序允许有序数据集合,需要修改集合(set){1, 2, 3}可变无序不允许唯一元素集合,集合运算字典(dict){'a': 1, 'b': 2}可变无序键唯一键值对映射,快速查找字节数组(bytearray)bytearray(b'hello')可变有序允许需要存储和处理二进制数据范围(range)range(5)不可变有序允许表示数字序列,节省内存字符串(str)'hello'不可变有序允许文本处理,字符序列元组(tuple)(1, 2, 3)不可变有序允许固定数据集合,字典键字节串(bytes)b'hello'不可变有序允许不可变二进制数据# ------------------可变容器-----------------------# 列表listDemo=[1,2,3,4,5,3,4,5]print(f"列表{listDemo}")listDemo.append(6)print(f"追加元素6之后列表{listDemo}")listDemo[0]=10print(f"修改[0]为10之后列表{listDemo}")print()# 集合setDemo={1,2,3,4,5,3,4,5}print(f"集合{setDemo}")setDemo.add(6)print(f"添加元素6之后集合{setDemo}")setDemo.remove(3)print(f"删除元素3之后集合{setDemo}")print()# 字典dictDemo={"name":"Irene","age":18}print(f"字典{dictDemo}")dictDemo["sex"]="female"print(f"修改字典之后字典{dictDemo}")deldictDemo["age"]print(f"删除字典的age之后字典{dictDemo}")print()# 字节数组bytearrayDemo=bytearray(b'hello')print(f"字节数组{bytearrayDemo}")bytearrayDemo[0]=65print(f"修改字节数组[0]元素之后字节数组{bytearrayDemo}")print()# ------------------不可变容器-----------------------# 范围rangeDemo=range(1,10)print(f"{rangeDemo}遍历",end=":")foriinrangeDemo:print(i,end=" ")print("\n")# rangeDemo[0]=100 # 不可修改,也没有提供修改元素的方法# 字符串stringDemo="Irene"print(f"字符串{stringDemo}")stringDemo=stringDemo.replace('r','a');# 原对象不可修改,返回新对象print(f"替换字符串r为a之后字符串{stringDemo}")print()# 元组tupleDemo=(1,2,3,4,5)print(f"元组{tupleDemo}")# tupleDemo[0] = 10 # 不可修改,也没有提供修改元素的方法print()# 字节bytesDemo=b'Irene'print(f"字节串{bytesDemo}")bytesDemo=bytesDemo.replace(b'r',b'a')print(f"替换字节串r为a之后字节串{bytesDemo}")print()# 冻结集合frozensetDemo=frozenset([1,2,3,4,5])print(f"冻结集合{frozensetDemo}")# frozensetDemo.add(6) # 冻结集合不可修改,也没有提供修改元素的方法5.1.2 容器通用基础操作检查元素x是否为容器中的成员:x in container获取容器的长度:len(container)遍历容器:for x in container:容器:找最大值max(container)、最小值min(container)容器元素求累加和:sum(container)要求元素是数值类型""" 1、容器的通用操作: - 检查成员是否为容器中的元素:x in sequence - 获取容器的长度:len(sequence) - 遍历容器:for x in sequence : - 容器找最大值max(sequence)、最小值min(sequence) - 容器元素求累加和:sum(container) 要求元素是数值类型 """print("-"*20,"容器之列表list类型","-"*20)nums=[1,2,3,4,5]print("nums:",nums)print("4在列表中吗?",4innums)print("列表的长度是:",len(nums))fornuminnums:print(num)print("列表中的最大值是:",max(nums))print("列表中的最小值是:",min(nums))print("元素的累加和是:",sum(nums))# 要求元素是数值类型print("-"*20,"容器之集合set类型","-"*20)words={"hello","world","python","atguigu"}print("words:",words)print("hello在集合中吗?","hello"inwords)print("集合的长度是:",len(words))forwordinwords:print(word)print("集合中的最大值是:",max(words))print("集合中的最小值是:",min(words))5.2 序列类型说明:序列(sequence)类型是有序的容器,支持索引访问。常见的序列类型包括:----列表(List)、字符串(String)、元组(Tuple)等元素:有序、可重复5.2.1 序列类型通用的操作根据索引方式访问序列的元素:例如sequence[0]通过切片方式访问序列的元素:例如sequence[1:3][ start : end ],步长为1,复制[start, end)范围的元素。start缺省表示从0开始,end缺省表示到末尾。[start :: step],start是起始下标。步长为step的绝对值。step为正数,表示正序,start缺省表示从0开始。step为负数,表示倒序,start缺省表示从末尾开始。获取元素x的索引:sequence.index(x)序列拼接相加:sequence1 + sequence2序列乘法:sequence1 * n元素x数量统计:sequence.count(x)遍历列表元素:x代表元素,i代表元素索引,sequence代表序列for x in sequencefor i in range(len(sequence))for i,x in enumerate(sequence)words=["hello","world","python","atguigu","ai"]# 访问元素# 正序索引:索引从0开始# 倒序索引:索引从-1开始# 根据访问单个元素print("words[0]:",words[0])print("words[-1]:",words[-1])# 获取元素索引print("words.index('atguigu'):",words.index("atguigu"))# 切片print("words[1:3]:",words[1:3])print("words[:3]:",words[:3])print("words[3:]",words[3:])print("words[1:-1]",words[1:-1])# 序列相加,拼接words=words+[6,7]print("words + [6,7]:",words)words=words*2# 列表重复2次print("words * 2:",words)# 元素数量统计(元素可重复)print("words.count(5):",words.count(5))# 遍历forwordinwords:print(word)foriinrange(len(words)):print(f"第{i+1}个单词{words[i]}")fori,wordinenumerate(words):print(f"第{i+1}个单词{word}")5.2.2 列表(有序可变[])列表是一个可变的集合,是一个元素有序、可重复的序列。列表使用 [] 定义,数据之间使用 , 分隔。列表中每个元素都有对应的位置值,称为索引或下标,-索引值:从左往右从0开始逐个向后递增,从右往左从-1开始逐个向前递减。列表中元素可以是不同的类型。1、创建列表# 创建列表list_demo1=[10,20,30,40,50]# []代表列表print("list_demo1:",list_demo1)list_demo2=list(range(10))# 使用range创建列表print("list_demo2:",list_demo2)list_demo3=list("hello world")# 字符串转列表print("list_demo3:",list_demo3)list_demo4=list()# 空列表print("list_demo4:",list_demo4)2、容器、序列通用操作# 检查成员是否为列表中的元素listDemo=[10,20,30,40,50]print(f"10 in{listDemo}:",10inlistDemo)# Trueprint(f"60 in{listDemo}:",10inlistDemo)# False# 获取列表长度print("列表的长度",len(listDemo))# 访问列表元素print("listDemo[0]:",listDemo[0])# 获取索引[0]的元素10print("listDemo[-2]:",listDemo[-2])# 获取索引[-2]的元素40# 列表切片listDemo=[10,20,30,40,50]print(listDemo[:])# 复制整个列表print(listDemo[2:])# 复制索引[2]到末尾的所有元素print(listDemo[:-2])# 复制开头到索引[-2](不含)的所有元素print(listDemo[1:-2])# 复制索引[1]到索引[-2](不含)的所有元素print(listDemo[::2])# 从头开始,步长为2获取元素print(listDemo[::-2])# 从尾开始,步长为2倒序获取元素print(listDemo[1::2])# 从[1]开始,步长为2获取元素print(listDemo[-2::-2])# 从[-2]开始,步长为2倒序获取元素# 遍历列表# 方式一:直接遍历元素listDemo=[10,20,30,40,50]print("列表遍历",end=":")fornuminlistDemo:print(num,end=" ")print()# 方式二:通过索引遍历元素listDemo=[10,20,30,40,50]print("列表遍历",end=":")foriinrange(len(listDemo)):print(listDemo[i],end=" ")print()# 方式三:使用enumerate()同时获取下标和元素listDemo=[10,20,30,40,50]print("列表遍历",end=":")fori,numinenumerate(listDemo):print(f"{i}={num}",end=" ")print()# 列表相加/拼接one=[1,2,3]two=['a','b','c']three=one+two# 列表相加print(f"{one}+{two}={three}")# [1, 2, 3] + ['a', 'b', 'c'] = [1, 2, 3, 'a', 'b', 'c']# 列表相乘/重复listDemo1=[10,20,30]listDemo2=listDemo1*3print(f"{listDemo1}* 3 ={listDemo2}")# [10, 20, 30] * 3 = [10, 20, 30, 10, 20, 30, 10, 20, 30]# 列表统计listDemo=[3,5,8,6,3,3,9,3,7]print(f"列表{listDemo}的最大值:",max(listDemo))print(f"列表{listDemo}的最小值:",min(listDemo))print(f"列表{listDemo}元素之和:",sum(listDemo))#只适用于元素是数值类型print(f"列表{listDemo}中3的数量:",listDemo.count(3))3、向列表添加元素# 列表添加元素listDemo=[10,20,30,40,50]listDemo.append(60)# 末尾追加元素listDemo.insert(1,70)# 指定位置插入元素,例如在[1]位置插入70print(listDemo)# [10, 70, 20, 30, 40, 50, 60]4、删除列表元素# 列表删除元素listDemo=[10,20,30,40,50,60,70,80,90,100]print(f"删除之前列表:{listDemo}")# 方式一:指定下标删除元素dellistDemo[1]print(f"删除[1]元素之后列表:{listDemo}")# 方式二:通过切片删除元素dellistDemo[1:4]print(f"删除[1:4]元素之后列表:{listDemo}")# 方式三:使用remove()方法删除指定元素listDemo.remove(60)print(f"删除60元素之后列表:{listDemo}")# 方式四:使用pop()方法删除指定元素listDemo.pop(1)print(f"删除[1]元素之后列表:{listDemo}")# 列表清空listDemo.clear()print(f"清空列表之后列表:{listDemo}")5、修改列表中的元素# 列表元素修改# 方式一:通过下标修改单个元素listDemo=[10,20,30,40,50,60]print(f"修改之前列表:{listDemo}")listDemo[0]='a'print(f"替换[0]元素后列表:{listDemo}")# ['a', 20, 30, 40, 50, 60]# 方式二:通过切片修改多个元素listDemo[2:4]=['a',
返回列表