Python学习笔记(三) 数据结构与常用方法

这篇具有很好参考价值的文章主要介绍了Python学习笔记(三) 数据结构与常用方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

数据结构是计算机内部对数据按一定的结构进行排列组织的存放,以达到快速查找,提取但目的

常见的数据结构有:列表、字典、元组、集合、双端队列、区间

列表

列表是一种常用的数据结构,可以容纳各种类型的数据

#两种创建列表的方式
list1=[]
list2=list()  #python的一个内置函数,可以直接使用
#更推荐第一种方式

#列表中的元素可以是任意的数据类型(也可以嵌套其他的数据结构)
list1=[1,'2354',False,[1,2]]

print(type(list1))
#列表的数据类型为list

#内置的转换函数list
tuple1=(1,2,3)
print(type(tuple1))  #输出tuple
tuple1= list(tuple1)
print(type(tuple1))  #输出的不是tuple而是list

#序列:是一种数据结构对象。某个对象以数据结构的形式保存数据
list1=[1,2,3] #也可以将其称之为一个列表序列,是一个对象

#列表的索引,与字符串的索引相同
list1=[1,2,3,4,5,6]
print(list1[3])  #查看list索引位3的元素,输出4
print(list1[0:4]) #查看索引位0开始,索引位3结束(不包含4)
print(list1[1:]) #查看索引位1开始,输出到最后
print(list1[:4]) #查看索引0开始到第三位
print(list1[1:-1]) #查看索引1开始到倒数第二位
#带有步长的查询
print(list1[1:5:2]) #查看索引1开始到索引5,步长为2,输出结果为2,4,6

#列表的加法
list1=[1,2,3,4,5,6]
list2=[1,2,3]
print(list1 + list2)
#[1, 2, 3, 4, 5, 6, 1, 2, 3],将两个列表进行了组合

#列表的乘法
print(list2 * 2)
#输出[1, 2, 3, 1, 2, 3],只能乘数字

#列表添加元素append
list1=[1,2,3,4]
list1.append('12345sq') #一次只能传递一个元素,在尾部添加
print(list1)
#[1, 2, 3, 4, '12345sq']
list1.append([1,2]) #传递进去一个列表
print(list1)
#[1, 2, 3, 4, '12345sq', [1, 2]]

#列表添加元素insert
list1=[1,2,3,4]
list1.insert(0,'wqe') #在索引0的位置前插入元素,也只能一次传递一个元素
print(list1)
#['wqe', 1, 2, 3, 4]

#列表中删除元素remove,pop,del
list1=[1,2,3,4]
list1.remove(4) #制定要删除的内容,输入这个元素
print(list1)
#[1,2,3]
list1.pop()     #弹出末尾的一个元素,但pop会把这个元素返回
var=list1.pop() #把最后一位‘2’,弹出并赋值到var
print(var)
#2
del list[0]    #删除指定索引0的元素
#del 是一个关键字,而不是和remove、pop一样是一种方法

#列表修改和查看元素
list1=[1,2,3,4,5]
list1[0]='ws'
print(list1)
#[ws,2,3,4,5]

#列表修改和查看元素——索引叠加
list1=[1,2,3,4,5,['ws','qwe',['ert','uty']]]
print(list1[5][2][1])
#uty

#列表的元素排序——reverse倒叙排序
list1=[1,2,3,4,5]
list1.reverse()
print(list1)
#[5, 4, 3, 2, 1]

#列表的元素排序——sort可自定义排序
list1=['qwe','asdc','szcqqq','aaaaaaa','a']
#参数reverse=Ture代表倒序排序,False为正序排序
#参数key作为排序依据 
list1.sort(key=len,reverse=False)  #key=len说明以字符以多到少排序
print(list1)
#['a', 'qwe', 'asdc', 'szcqqq', 'aaaaaaa']

内置函数len max min

list1=[1,2,3,4,5]
list2=['10','20','30','40','50']
str1='ABCDE edcba'

#len函数 返回字符串长度
print(len(list1)) #输出5
print(len(list2)) #输出5
print(len(str1)) #输出11

#max函数 返回ASCII码值最大的
print(max(list1))  #输出5
print(max(list2))  #输出5,对字符串处理时逐个处理
print(max(str1))   #输出e

#min函数 返回ASCII码值最小的,同上

方法count、index

#count——统计元素出现的次数
list1=[1,2,3,4,5,6,1]
print(list1.count(1))
#2

#index——统计元素的位置
list1=[1,2,3,4,5,6,1]
print(list1.index(4)) #返回元素的索引的位置
#3

list1=[1,2,3,[4,5],6,1] 
print(list1.index(5)) #无法搜索嵌套列表的值
#报错
list1=[1,2,3,['4',5],6,1]
print(list1.index('4')) #无法搜索嵌套列表的值
#报错
list1=[1,2,3,['4',5],6,1]
print(list1[3].index('4')) #通过指定列表所在位置
#0

字典

通过键值对key=value的形式保存元素的一种数据结构

#创建字典
dict1={'ws':123,'qwe':'weq','王':'sheng'} #字典的key不允许相同、且key必须为常量
print(type(dict1)) #<class 'dict'>

#创建字典,用内置函数的方式
dict1=dict([['qwe','ewq'],['asd','dsa']])
print(dict1)
#{'qwe': 'ewq', 'asd': 'dsa'}

#字典通过key查找value
dict1={'ws':123,'qwe':'weq','王':'sheng'}
print(dict1['ws'])
#123
print(dict1['NA'])
#报错

#字典通过get方法查找value 不会报错
print(dict1.get('NA'))
#None

#在字典中添加元素——直接赋值新的key
dict1={'ws':123,'qwe':'weq','王':'sheng'}
dict1['ads']='qcvx'
print(dict1)
#{'ws': 123, 'qwe': 'weq', '王': 'sheng', 'ads': 'qcvx'}

#在字典中添加元素——setdefault传参
dict1={'ws':123,'qwe':'weq','王':'sheng'}
dict1.setdefault('ads','wqw') #前面为key,后面为value,如果没有value则会记为空
print(dict1)
#{'ws': 123, 'qwe': 'weq', '王': 'sheng', 'ads': 'wqw'}
#{'ws': 123, 'qwe': 'weq', '王': 'sheng', 'ads': None}

#在字典中删除元素——del、pop
dict1={'ws':123,'qwe':'weq','王':'sheng'}
del dict1['ws']
print(dict1)
#{'qwe': 'weq', '王': 'sheng'}
dict1={'ws':123,'qwe':'weq','王':'sheng'}
var=dict1.pop('ws')
print(var)
#123
print(dict1)
#{'qwe': 'weq', '王': 'sheng'}

#字典中修改value——重新赋值、update
dict1={'ws':123,'qwe':'weq','王':'sheng'}
dict1['ws']='ws'
print(dict1)
#{'ws': 'ws', 'qwe': 'weq', '王': 'sheng'}
dict1.update({'ws':'wsc'})
print(dict1)
#{'ws': 'wsc', 'qwe': 'weq', '王': 'sheng'}

#获取字典的key、value与键值对——keys(),values(),items()
dict1={'ws':123,'qwe':'weq','王':'sheng'}
print(dict1.keys())
print(dict1.values())
print(dict1.items())
#dict_keys(['ws', 'qwe', '王'])
#dict_values([123, 'weq', 'sheng'])
#dict_items([('ws', 123), ('qwe', 'weq'), ('王', 'sheng')])

元组

一种不可变的数据结构,一旦创建不能添加、删除与修改 出于数据安全考虑的,安全性很高

#创建元组
tuple1=(1,'2',True,[2,4],(1,2))
print(type(tuple1)) #<class 'tuple'>

#内置转换函数tuple
list1=[1,2,3]
tuple1=tuple(list1)
print(tuple1)
#(1, 2, 3)

#可以通过赋予变量的重新创建对元组进行修改
tuple1=(1,'2',True,[2,4],(1,2))
var1=2
tuple1=(var1,'2',True,[2,4],(1,2))
print(tuple1)
#(2, '2', True, [2, 4], (1, 2))

封包与解包

封包:将多个值赋值给一个变量 解包:将一个元组或列表赋值给多个变量

#解包,一一赋值,多或少都会导致报错
tuple1=(1,2,3,4)
var1,var2,var3,var4=tuple1
print(var1,var2,var3,var4)
#1 2 3 4

#封包————让变量赋值多元素
tuple1=(1,2,3,4)
*var1,var2,var3=tuple1
print(var1,var2,var3)
#[1, 2] 3 4 用列表来承载多元素

集合

分为可变集合set和不可变集合fornzset

特点:不支持索引,元素随机排列,只能包含常量,不能重复,有重复自动删除

#创建集合
set1={1,2,3,5,6,7,8,7,8,True,(1,3)}
print(type(set1)) #<class 'set'>
print(set1)
#{1, 2, 3, (1, 3), 5, 6, 7, 8}

#可变集合添加元素add
set1={1, 2, 3, (1, 3), 5, 6, 7, 8}
set1.add('ws')
print(set1)
#{1, 2, (1, 3), 3, 5, 6, 7, 8, 'ws'}

#可变集合删除元素remove、discord
set1.remove('ws')
print(set1)
#{1, 2, (1, 3), 3, 5, 6, 7, 8}
set1.remove('ws')
print(set1)
#报错
set1.discard('ws')
print(set1)
#不会报错,什么都不执行

#pop也可以在集合中使用,同理

#集合用以消除 在列表相加而出现的重复元素
list1=[1,2,3,4]
list2=[2,3,4,5,6]
list3=list(set(list1 + list2))
print(list3)
#[1, 2, 3, 4, 5, 6]

集合的关系测试

set1={1,2,'qwe'}
set2={2,3,'erq'}
set3={1,5,4,'qwe'}

#包含关系判断issubclass、issuperset
print(set1.issubset(set2)) # 测试前面的集合是不是后面集合的子集
#False
print(set1.issuperset(set2)) # 测试前面的集合是否完全包含后面的集合
#False

#集合相减difference、difference_update
print(set1.difference(set3)) #difference集合相减
set1-set3 #等同于
print(set1) #set1不会有变化吗,需要再次赋值之后才行
#{1, 2, 'qwe'}
set1.difference_update(set3) #difference_update集合相减立即生效
print(set1)
#{2}

#集合相交intersection、intersection_update
set1=set1.intersection(set3) #n找出相交的元素,通过赋值给予
set1 & set3 #等同于
print(set1)
set1.intersection_update(set2) #立即成效给set1
print(set1)

#集合并集union、update
set1=set1.union(set2)
print(set1)
#{'erq', 1, 2, 'qwe', 3}
set1.update(set2)
print(set1)
#{1, 2, 3, 'erq', 'qwe'}

不可变集合

和元组差不多,所以不支持自动生效的关系测试的方法,例如只支持关系判断issubclass,集合相减difference,集合相交intersection,集合并集union

元组是有序的,但不可变集合是无序的文章来源地址https://www.toymoban.com/news/detail-761387.html

#创建
fest1=frozenset([1,2,3,4])
print(type(fest1))
#<class 'frozenset'>

到了这里,关于Python学习笔记(三) 数据结构与常用方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 数据结构-学习笔记

     注意:该文章摘抄之百度,仅当做学习笔记供小白使用,若侵权请联系删除! 什么是数据结构? 数据结构是计算机存储、组织数据的方式。 数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。 结构包括逻辑结构和物理结构。 数据的逻辑结构包括4种  (1)集

    2024年01月23日
    浏览(52)
  • Redis数据结构学习笔记

    图文主要参考小林Coding的图解redis数据结构 除了它是内存数据库,使得所有的操作都在内存上进⾏之外,还有⼀个重要因素,它实现的数据结构,使 得我们对数据进⾏增删查改操作时,Redis 能⾼效的处理。 :::tips redisDb 结构 ,表示 Redis 数据库的结构,结构体⾥存放了指向了

    2024年02月02日
    浏览(44)
  • 数据结构学习笔记——多维数组、矩阵

    数组是由n(n≥1)个 相同数据类型 的数据元素组成的有限序列,在定义数组时,会为数组分配一个固定大小的内存空间,用来存储元素,数组在被定义后,其维度不可以被改变。 数组在确定其维度和维界后,元素的个数是固定的,所以不能进行插入和删除运算。数组中最常

    2024年02月03日
    浏览(48)
  • 【雨学习】数据结构入门---线性结构的笔记及代码实现

    数组元素类型相同,大小相等 定义:         n个节点离散分配,彼此通过指针相连,每个节点只有一个前驱节点,且只有一个后续节点         首节点前没有前驱节点,尾节点没有后续节点 专业术语:         首节点:第一个有效节点         尾节点:最后

    2024年01月23日
    浏览(53)
  • 数据结构学习笔记——二叉排序树

    查找算法中,基于树这种数据结构进行查找即为树形查找,可将其分为 二叉排序树 、 平衡二叉树 和 B树 三种树形查找方法: 二叉排序树也称为二叉查找树或二叉搜索树(注意:与二分查找的判定树不同),其中各结点值的大小关系是: 左子树根结点右子树 ,且左、右子树

    2024年02月09日
    浏览(54)
  • 区块链学习笔记(2)BTC数据结构

    1.哈希指针(hash pointers):一般的指针存储的是某个结构体在内存中的地址,哈希指针除了要保存结构体的地址外,还要保存这个结构体的哈希值。 通过哈希指针,我们不但可以找到结构体在内存中的位置,同时还可以检测出结构体的内容是否遭到了篡改。 因为我们记录了

    2023年04月16日
    浏览(53)
  • 【学习笔记】数据结构算法文档(类C语言)

    1.1.1 线性表的顺序存储表示 1.1.2 顺序表中基本操作的实现 1.1.2.1 初始化 1.1.2.2 取值 1.1.2.3 查找 1.1.2.4 插入 1.1.2.5 删除 1.1.2.6 计数 1.2.1 单链表的定义和表示 ★ 关于结点 1.2.2 单链表基本操作的实现 1.2.2.1 初始化 1.2.2.2 取值 1.2.2.3 查找 1.2.2.4 插入 1.2.2.5 删除 1.2.2.6 前插法创建单

    2024年02月07日
    浏览(42)
  • Halcon学习笔记(二)数据结构、通道+XLD

    图像(Image):图像是Halco中最基本的数据结构,用于表示二维图像。它包含了图像的像素值、尺寸、颜色模式等信息。图像可以是灰度图像(单通道图像)或彩色图像(多通道图像),颜色通道可以是RGB、HSV等。图像可以通过读取文件、采集设备或者算法生成。 区域(Regi

    2024年02月22日
    浏览(34)
  • C#学习笔记--复杂数据类型、函数和结构体

    特点:多个数据变量地一个集合体,可以自己命名 种类:枚举、数组和结构体 枚举:整型常量的集合 数组:任意变量类型的顺序存储的数据集合 结构体:任意变量类型的数据组合成的数据块 枚举 : 枚举可以方便表示对象的各种状态,本质还是一种变量。 例如我们可以用

    2024年02月08日
    浏览(43)
  • 区块链技术与应用 - 学习笔记3【比特币数据结构】

    大家好,我是比特桃。 本系列笔记只专注于探讨研究区块链技术原理,不做其他违反相关规定的讨论。 区块链技术已被纳入国家十四五规划,在“加快数字发展 建设数字中国”篇章中,区块链被列为“十四五”七大数字经济重点产业之一,迎来创新发展新机遇。 经科技部批

    2024年02月09日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包