热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

学python处理数据结构_python学习之常用数据结构

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

前言:数据结构不管在哪门编程语言之中都是非常重要的,因为学校的课程学习到了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的对称差集 也就是并集 - 交集

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

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



推荐阅读
  • 模板引擎StringTemplate的使用方法和特点
    本文介绍了模板引擎StringTemplate的使用方法和特点,包括强制Model和View的分离、Lazy-Evaluation、Recursive enable等。同时,还介绍了StringTemplate语法中的属性和普通字符的使用方法,并提供了向模板填充属性的示例代码。 ... [详细]
  • 本文介绍了Python爬虫技术基础篇面向对象高级编程(中)中的多重继承概念。通过继承,子类可以扩展父类的功能。文章以动物类层次的设计为例,讨论了按照不同分类方式设计类层次的复杂性和多重继承的优势。最后给出了哺乳动物和鸟类的设计示例,以及能跑、能飞、宠物类和非宠物类的增加对类数量的影响。 ... [详细]
  • 第四章高阶函数(参数传递、高阶函数、lambda表达式)(python进阶)的讲解和应用
    本文主要讲解了第四章高阶函数(参数传递、高阶函数、lambda表达式)的相关知识,包括函数参数传递机制和赋值机制、引用传递的概念和应用、默认参数的定义和使用等内容。同时介绍了高阶函数和lambda表达式的概念,并给出了一些实例代码进行演示。对于想要进一步提升python编程能力的读者来说,本文将是一个不错的学习资料。 ... [详细]
  • 这篇文章主要介绍了Python拼接字符串的七种方式,包括使用%、format()、join()、f-string等方法。每种方法都有其特点和限制,通过本文的介绍可以帮助读者更好地理解和运用字符串拼接的技巧。 ... [详细]
  • 本文介绍了在iOS开发中使用UITextField实现字符限制的方法,包括利用代理方法和使用BNTextField-Limit库的实现策略。通过这些方法,开发者可以方便地限制UITextField的字符个数和输入规则。 ... [详细]
  • 如何自行分析定位SAP BSP错误
    The“BSPtag”Imentionedintheblogtitlemeansforexamplethetagchtmlb:configCelleratorbelowwhichi ... [详细]
  • 电话号码的字母组合解题思路和代码示例
    本文介绍了力扣题目《电话号码的字母组合》的解题思路和代码示例。通过使用哈希表和递归求解的方法,可以将给定的电话号码转换为对应的字母组合。详细的解题思路和代码示例可以帮助读者更好地理解和实现该题目。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • 本文讨论了Kotlin中扩展函数的一些惯用用法以及其合理性。作者认为在某些情况下,定义扩展函数没有意义,但官方的编码约定支持这种方式。文章还介绍了在类之外定义扩展函数的具体用法,并讨论了避免使用扩展函数的边缘情况。作者提出了对于扩展函数的合理性的质疑,并给出了自己的反驳。最后,文章强调了在编写Kotlin代码时可以自由地使用扩展函数的重要性。 ... [详细]
  • 本文讨论了如何使用IF函数从基于有限输入列表的有限输出列表中获取输出,并提出了是否有更快/更有效的执行代码的方法。作者希望了解是否有办法缩短代码,并从自我开发的角度来看是否有更好的方法。提供的代码可以按原样工作,但作者想知道是否有更好的方法来执行这样的任务。 ... [详细]
  • 基于dlib的人脸68特征点提取(眨眼张嘴检测)python版本
    文章目录引言开发环境和库流程设计张嘴和闭眼的检测引言(1)利用Dlib官方训练好的模型“shape_predictor_68_face_landmarks.dat”进行68个点标定 ... [详细]
  • Java程序设计第4周学习总结及注释应用的开发笔记
    本文由编程笔记#小编为大家整理,主要介绍了201521123087《Java程序设计》第4周学习总结相关的知识,包括注释的应用和使用类的注释与方法的注释进行注释的方法,并在Eclipse中查看。摘要内容大约为150字,提供了一定的参考价值。 ... [详细]
  • Android自定义控件绘图篇之Paint函数大汇总
    本文介绍了Android自定义控件绘图篇中的Paint函数大汇总,包括重置画笔、设置颜色、设置透明度、设置样式、设置宽度、设置抗锯齿等功能。通过学习这些函数,可以更好地掌握Paint的用法。 ... [详细]
  • EPPlus绘制刻度线的方法及示例代码
    本文介绍了使用EPPlus绘制刻度线的方法,并提供了示例代码。通过ExcelPackage类和List对象,可以实现在Excel中绘制刻度线的功能。具体的方法和示例代码在文章中进行了详细的介绍和演示。 ... [详细]
author-avatar
yubu5208_176
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有