python学习之常用数据结构
前言:数据结构不管在哪门编程语言之中都是非常重要的,因为学校的课程学习到了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删除列表
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学习之常用数据结构的更多相关文章
- Python学习 Part3:数据结构
Python学习 Part3:数据结构 1. 深入列表: 所有的列表对象方法 list.append(x): 在列表的末尾添加一个元素 list.extend(L): 在列表的末尾添加一个指定列表的所 ...
- python学习笔记五——数据结构
4 . python的数据结构 数据结构是用来存储数据的逻辑结构,合理使用数据结构才能编写出优秀的代码.python提供的几种内置数据结构——元组.列表.字典和序列.内置数据结构是Python语言的精 ...
- Python学习笔记系列——数据结构相关
Python有4种数据结构:列表(list).字典(dictionary).元组(Tuple).集合(set).从最直接的感官上来说,这四种数据结构的区别是:列表中的元素使用方括号括起来,字典和集合是 ...
- 【python基础】--常用数据结构
list tuple dict set四种常用数据结构 list list 有序的集合,可以随时添加.删除其中元素值; 支持list嵌套模式, >>> p = ['a','b']&g ...
- Python—字符串和常用数据结构
目录 1. 字符串 2. 列表 2.1 列表的增删改查 2.2 列表的切片和排序 2.3 生成式语法 3. 元组 4.集合 5. 字典 5.1 字典的增删改查 5.2 字典的常见操作 序言:这一章我们 ...
- Python学习笔记-常用模块
1.python模块 如果你退出 Python 解释器并重新进入,你做的任何定义(变量和方法)都会丢失.因此,如果你想要编写一些更大的程序,为准备解释器输入使用一个文本编辑器会更好,并以那个文件替代作 ...
- Python学习 :常用模块(二)
常用模块(二) 四.os模块 os模块是与操作系统交互的一个接口,用于对操作系统进行调用 os.getcwd() # 提供当前工作目录 os.chdir() # 改变当前工作目录 os.curdir( ...
- Python机器视觉编程常用数据结构与示例
本文总结了使用Python进行机器视觉(图像处理)编程时常用的数据结构,主要包括以下内容: 数据结构 通用序列操作:索引(indexing).分片(slicing).加(adding).乘(multi ...
- Python 学习:常用函数整理
整理Python中常用的函数 一,把字符串形式的list转换为list 使用ast模块中的literal_eval函数来实现,把字符串形式的list转换为Python的基础类型list from as ...
随机推荐
- java——类、对象、private、this关键字
一.定义 二.类的使用 实例:定义的类要在一个class文件内,实例化类的对象要在另一个文件内 类文件: 实例文件: 对象内存图: 先主函数入栈,之后新开一个对象存入堆内存中,之后调用的call方法 ...
- 整体算力提升40% 芯片级安全防护 | 阿里云发布第七代ECS云服务器
2 月 8 日,阿里云宣布推出第七代 ECS 云服务器产品家族,基于最新的神龙架构,相较于上一代整体算力提升 40%,容器部署密度最大可提升 6 倍,是最佳的云原生载体,此外全量搭载安全芯片,实现&q ...
- Python3.7.9+Locust1.4.3版本性能测试工具案例分享
一.Locust工具介绍 1.概述 Locust是一款易于使用的分布式负载测试工具,完全基于事件,使用python开发,即一个locust节点也可以在一个进程中支持数千并发用户,不使用回调,通过gev ...
- CF1459-C. Row GCD
CF1459-C. Row GCD 题意: 给出两个整数序列\(a.b\),他们的长度分别为\(n,m\).对于数组\(b\)中的每个数字,让你求出\(gcd(a_1+b_j,a_2+b_j,..., ...
- conda 命令笔记
1.虚拟环境 conda -V # 查看当前conda 版本 conda update conda # 更新conda conda env list 查看当前已有的虚拟环境 conda create ...
- [Golang]-2 Map关联数组与下划线(_)的意义
目录 map 下划线(underscore) 用在import 用在返回值 用在变量 map map 是 Go 内置关联数据类型(在一些其他的语言中称为哈希 或者字典 ). func main() { ...
- 一篇文章图文并茂地带你轻松实践 HTML5 history api
HTML5 history api 前言 由于笔者在网络上没有找到比较好的关于 history api 的实践案例,有的案例过于杂乱,没有重点,有些案例只是告诉读者 api 是什么,却没告诉怎么用,本 ...
- 无需扫描即可查找和攻击域SQL Server (SPN)
无扫描SQL Server发现简介 当您没有凭据或正在寻找不在域中的SQL Server时,使用各种扫描技术来查找SQL Server可能非常有用.但是,此过程可能很嘈杂,耗时,并且可能由于子网未知, ...
- C#通过NI-VISA操作Tektronix TBS 2000B系列示波器
一.概述 本文描述采用C#语言访问控制Tektronix TBS 2000B 系列示波器.接口协议采用NI-VISA. 最近一个项目需要和一款示波器进行通信,需要对示波器进行一些简单控制并获取到波形数 ...
- Ubuntu pppoeconf失败
之前是通过sudo pppoeconf一路yes就可以连通有线网络(dsl和ethernet)的, 系统再次瘫痪后终于进入图形界面, 有线网络丢失, sudo pppoeconf也fail了, 其实加 ...