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 ...
随机推荐
- HDU - 3613 Best Reward(manacher或拓展kmp)
传送门:HDU - 3613 题意:给出26个字母的价值,然后给你一个字符串,把它分成两个字符串,字符串是回文串才算价值,求价值最大是多少. 题解:这个题可以用马拉车,也可以用拓展kmp. ①Mana ...
- Uva 10815 Andy's First Dictionary(字符串)
题目链接:https://vjudge.net/problem/UVA-10815 题意 找出一段文本中的所有单词,以小写形式按照字典序输出. 思路 用空白符替换文本中所有非字母字符后再次读入. 代码 ...
- 5.2 spring5源码--spring AOP源码分析三---切面源码分析
一. AOP切面源码分析 源码分析分为三部分 1. 解析切面 2. 创建动态代理 3. 调用 源码的入口 源码分析的入口, 从注解开始: 组件的入口是一个注解, 比如启用AOP的注解@EnableAs ...
- MongoDB 部署 & 基础命令
MongoDB 官方文档 MongoDB 介绍 Mongodb 由 C++ 语言编写的,是一个基于分布式文件存储的开源数据库系统. 是专为可扩展性,高性能和高可用性而设计的数据库, 是非关系型数据库中 ...
- 二进制安装kubernetes(七) 部署知识点总结
1.k8s各个组件之间通信,在高版本中,基本都是使用TSL通信,所以申请证书,是必不可少的,而且建议使用二进制安装,或者在接手一套K8S集群的时候,第一件事情是检查证书有效期,证书过期或者TSL通信问 ...
- codeforces 1039B Subway Pursuit【二分+随机】
题目:戳这里 题意:一个点在[1,n]以内,我们可以进行4500次查询,每次查询之后,该点会向左或向右移动0~k步,请在4500次查询以内找到该点. 解题思路:一边二分,一边随机. 交互题似乎有好多是 ...
- springboot( 三)redis demo
redis介绍 Redis是目前业界使用最广泛的内存数据存储.相比memcached,Redis支持更丰富的数据结构,例如hashes, lists, sets等,同时支持数据持久化.除此之外,Red ...
- R语言学习2:绘图
本系列是一个新的系列,在此系列中,我将和大家共同学习R语言.由于我对R语言的了解也甚少,所以本系列更多以一个学习者的视角来完成. 参考教材:<R语言实战>第二版(Robert I.Kaba ...
- tensorflow加载ckpt出错
Issue链接 问题: tensorflow加载ckpt出错 此处原因: 该ckpt文件对应的tensorflow版本过老, 其中的部分内置变量名发生了改变. 提示: Key lstm_o/bidir ...
- Pure CSS Progress Chart
Pure CSS Progress Chart CSS Progress Circle SCSS .example { text-align: center; padding: 4em; } .pie ...