首页 > 编程语言 > 详细

python学习之常用数据结构

时间:2020-11-27 22:27:19      阅读:37      评论:0      收藏:0      [点我收藏+]

前言:数据结构不管在哪门编程语言之中都是非常重要的,因为学校的课程学习到了python,所以今天来聊聊关于python的数据结构使用。

一.列表 list

1.列表基本介绍

  1. 列表中的每个元素都可变的,意味着可以对每个元素进行修改和删除;
  2. 列表是有序的,每个元素的位置是确定的,可以用索引去访问每个元素;
  3. 列表中的元素可以是Python中的任何对象;
  4. 可以为任意对象就意味着元素可以是字符串、整数、元组、也可以是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删除列表 del lst 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 in lst2)
21 print(a not in lst2)
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] = True
10 #删除  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 in t:
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 in sets3
10 print(isTrue)
11 print(000 not in sets3)
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的对称差集  也就是并集 - 交集

# 集合生成式  注意!只有可变序列才有生成式

 最后给大家分享一张图片,方便记忆!

技术分享图片

 

 

 

 

 

         

python学习之常用数据结构

原文:https://www.cnblogs.com/xy2559/p/14043149.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!