前言:数据结构不管在哪门编程语言之中都是非常重要的,因为学校的课程学习到了python,所以今天来聊聊关于python的数据结构使用。
一.列表 list
1.列表基本介绍
列表中的每个元素都可变的,意味着可以对每个元素进行修改和删除;
列表是有序的,每个元素的位置是确定的,可以用索引去访问每个元素;
列表中的元素可以是Python中的任何对象;
可以为任意对象就意味着元素可以是字符串、整数、元组、也可以是list等Python中的对象。
2.创建列表
1 #list列表的三种创建方式
2 #1.直接创建
3 lst = [1,2,3,4,5,"python"]4 print("lst====",lst)5 #2.通过list()方法来创建
6 lst2 = list([2,4,5,6,3])7 print("lst2=====",lst2)8 #可以直接用range函数生成
9 lst3 = list(range(10))10 print("lst3=====",lst3)11 #3.通过列表生成式来生成。 格式: 表达式 for 变量名 in range(100)
12 lst4 = [i**2 for i in range(1,5)]13 print("lst4====",lst4)
3. 列表的基本操作 增删改查
1 lst = [1,2,3,4,5,"python"]2 lst2 = [8,9,10]3 #1.增加元素
4 #在列表中的末尾一个元素
5 lsts = lst.append(56)6 print("在列表的末尾添加一个元素append(56)=====:",lst)7 #在列表中的末尾添加多个元素,没有返回值
8 lst.extend(lst2)9 print("在列表的末尾添加多个元素extend(lst2)=====:",lst)10 #在指定位置添加一个元素
11 lst.insert(0,"hahaha")12 print("添加了hahaha这个元素以后========",lst)
#2.删除列表
#remove()方法 删除指定的元素,一次只删除一个元素,重复元素只删除第一个,元素不存在则报错
lst.remove(5)
#lst.remove("ggg") #ValueError: list.remove(x): x not in list
print("移除5这个元素后=======",lst)
#pop删除一个指定索引上的函数,指定索引不存在则直接报错,如果不指定索引,则默认删除列表最后一个元素
lst.pop(0)
print("删除第0位元素后====",lst)
#clear清空列表
lst.clear()
print("clear()清空列表=====",lst)
#del删除列表
dellst
print(lst)
#3.修改列表元素:
lst[0] = 88
print(lst)
#4.查询列表元素 注意,索引可以为正数,也可以为复数!这是python中的特点
number =lst[0]
print(number)
#index(元素名)传入元素名字,获取它的索引
print("python在列表中的索引是:",lst.index("python"))
列表的其他操作
1 lst = [1,2,3,4,5,"python"]2
3 #切片表达式:可以进行列表的所有增删查操作
4 #格式: [起始位置:结束位置:步长] 起始位置和结束位置都可以不写
5 #查询指定位置的元素
6 lst2 = lst[:4]7 print(lst2)8 #删除指定位置的元素
9 lst[5:] =[]10 print(lst)11 #修改指定位置的元素
12 lst[:5] = [8,8,8,8,8]13 print(lst)14
15 #列表生成式 格式:表达式 for i in range()
16 lst2 = [i**2 for i in range(10)]17 print("使用列表生成式lst2:",lst2)18
19 #判断元素是否在列表中 in not in
20 print('a' inlst2)21 print('a' not inlst2)22
23 #排序,倒序方法
24 lst2.reverse()25 print("使用列表的倒序reverse方法后:",lst2)26 lst2.sort()27 print("使用列表的排序sort方法后:",lst2)
二 字典
1.字典的的基本介绍
字典中的数据必须以键值对的形式出现,即k,v:
key:必须是可哈希的值,比如intmstring,float,tuple,但是,list,set,dict不行
value:任何值
键不可重复,值可重复
键若重复字典中只会记该键对应的最后一个值
字典中键(key)是不可变的,何为不可变对象,不能进行修改;而值(value)是可以修改的,可以是任何对象。
在dict中是根据key来计算value的存储位置,如果每次计算相同的key得出的结果不同,那dict内部就完全混乱了。
2.字典的基本操作
1 #字典的创建
2 dict2={}3 dict1 = {"name":"zhangsan","age":23}4 print(dict1)5 dict3 = dict(name="jack",age=23,sex="男")6 print(dict3)7
8 #新增
9 dict3['happy'] =True10 #删除 del dict3['name'] 删除一个键值对
11 #dict3.clear() #直接删除整个字典元素
12 #获取值有两种方式:1.直接通过键来获取 2.通过get方法来使用
13 print(dict3['age'])14 print(dict3.get('sex'))15 print(dict3.get('money',999999999)) #后面跟着的数字是默认值,如果该键不存在那么就使用默认值
3.字典的其他操作
#常用方法:keys() values() items() 分别获取字典的所有键,值,键值对
dict3_keys =dict3.keys()print(type(dict3_keys))print(dict3_keys)print(list(dict3_keys))print("获取所有的值:",dict3.values())print("将字典中所有值转换为列表:",list(dict3.values()))
#字典生成式 zip(键的列表,值的列表)
foods = ['apple','bnana','origin']
prices=[2.3,453,456]
d = {food:price for food,price in zip(foods,prices)}
print(d)
#判断元素是否在字典中
isTrue = 'names' in dict3
print(isTrue)
三 元组 tuple
1.元组介绍
元组Tuple,用法与List类似,但元组中的值一经初始化,就不能修改,没有List中的append(), insert(), pop()等修改的方法,只能对元素进行查询
2.元组基本操作
1 #元组的创建方式
2 #直接赋值创建
3 t = ("python","love","me")4 #通过内置函数创建
5 t2 = tuple(("i","love","python"))6 print(t,type(t))7 print(t2,type(t2))8 #注意:只包含一个元素的元组必须有一个逗号,否则会被当成字符串。
9 t3 = ("tuple")10 print(t3,type(t3))11 t4 = ("tuple",)12 print(t4,type(t4))
3.其他操作
1 #元组的遍历,由于元组是可迭代对象,所以可以用for in 遍历
2 for i int:3 print(i,type(i))
四 集合set
1.集合介绍
集合更接近数学上集合的概念。集合中每个元素都是无序的、不重复的任意对象。
可以通过集合去判断数据的从属关系,也可以通过集合把数据结构中重复的元素减掉。集合可做集合运算,可添加和删除元素。
集合内数据无序,即无法使用索引和分片
集合内部数据元素具有唯一性,可以用来排除重复数据
集合内的数据:str,int,float,tuple,冰冻集合等,即内部只能放置可哈希数据
2.集合基本操作
1 #集合的创建方式
2 sets1 =set() #创建一个空集合3 print(sets1,"sets1")4 sets2 = set(range(10)) #创建一个0-9的集合5 print(sets2,"sets2")6 sets3 = set(list([1,2,3,4456,5,5,65,123])) #将给定的列表转换为集合7 print(sets3,"sets3")8 #判断元素是否位于集合当中 in not in
9 isTrue = 3 insets310 print(isTrue)11 print(000 not insets3)12
13
14 #添加元素
15 #若一次只添加一个元素
16 sets3.add("里斯")17 print(sets3,"sets3")18 #一次添加多个元素 使用update方法
19 sets3.update({100,1200,5456,4655,89,5,123})20 print(sets3,"sets3")21
22 #删除元素
23 sets3.discard("dfs") #如果指定删除的元素不存在不抛出异常,推荐使用!
24 print(sets3)25 #remove()一次删除一个指定的元素,如果元素不存在那么就抛出异常
26 sets3.pop() #默认删除集合中第一个元素
27 sets3.pop()28 print(sets3,"sets3")29 #clear() 清空整个集合
3.其他操作
#判断两个集合之间的关系
s1 = {i for i in range(10)}
s2= {i for i in range(5,15)}
s3= {i for i in range(100,102)}#1.判断两个集合是否相等 == !=
print(s1 ==s2)#2.判断一个集合是否为另一个集合的子集
print(s1.issubset(s2))#3.判断一个集合是否为另一个集合的超集(父集合)
print(s2.issuperset(s1))#4.判断两个集合是否含有交集
print(s1)print(s2)print(s1.isdisjoint(s2))print(s2.isdisjoint(s3))#集合中的数学运算 交并差 对称差
s1= {i for i in range(10)}
s2= {i for i in range(5,15)}
s3= {i for i in range(100,102)}print(s1)print(s2)print(s1 & s2) #两个集合的交集
print(s1 | s2) #两个集合的并集
print(s1 - s2 ) #s1与s2的差集
print(s1 ^ s2) #s1与s2的对称差集 也就是并集 - 交集
#集合生成式 注意!只有可变序列才有生成式
最后给大家分享一张图片,方便记忆!
![]()