python的基础数据结构有哪些(详解python的四种内置数据结构)
python的基础数据结构有哪些
详解python的四种内置数据结构对于每种编程语言一般都会规定一些容器来保存某些数据,就像java的集合和数组一样python也同样有这样的结构
而对于python他有四个这样的内置容器来存储数据,他们都是python语言的一部分可以直接使用而无需额外的导入
一.列表(list)
列表一种跟java和c中的数据很像的一种数据结构,他都是保存一系列相似,且有序元素的集合,不过不同的是列表中的元素可以不是同一种数据类型,且列表的长度是可变的
可以动态的增加可减少这一点则有点像java中的stringBuilder对象,列表中有一点值得注意的是在对列表进行复制是,不能简单的使用赋值语句,这样会使得两个变量同时指向一个列表,当一个改变时另一个变量的值也会改变,正确的复制方法是用copy()方法来进行复制
关于一个存储结构增删查看则其必备的功能:
1.列表元素的增加
- append的方法是将所要加的元素直接加到先前列表的末尾的方法,在增加的同时还会使得列表得长度增加
- extend方法是将一个列表中得所有元素加拓展到另一个列表的末尾将两个列表合并为一个列表
- insert方法是将一个元素插入到指定的位置,但是值得注意的是insert方法不能插到列表的末尾
2.列表元素的删除
- remove删除列表中指定的值,如果列表中没有remove参数中指定的值解释器将会报错
- pop删除指定索引位置对应的对象,如果pop方法中没有参数是则其默认的是删除列表的最后的一个对象,该方法的返回值就是对应删除的对象,若其指定的索不存在 时解释器同样会报错
下面通过一个简单的例子来说明以上方法的使用:
|
#在 Don't panic变为 on tap phrase = "Don't panic" plist = list (phrase) #将phrase表示的字符串转化为列表 print (phrase) #将该字符串输出 print (plist) #结果为['D', 'o', 'n', "'", 't', ' ', 'p', 'a', 'n', 'i', 'c'] plist.remove( "'" ) #将‘在列表中删除 for i in range ( 3 ): plist.pop() #将列表末尾的3个字符给删除,'n','i','c' plist.pop( 0 ) #将plist中索引对应的对象删除,也就是D #此时list中的值为['o', 'n', 't', ' ', 'p', 'a'] plist.extend([plist.pop( 5 ),plist.pop( 4 )]) #将p和a的位置交换 plist.insert( 2 ,plist.pop( 3 )) #将空格插入到对应索引为2的对象前 phrase = ''.join(plist) #将列表转化为字符串 print (phrase) |
3.列表元素的查看:
值得说明的是列表的查看和数组相似,都支持下标查看不过不同的是列表的查看功能比数组更多
- a.中括号加下标可以查看列表中的任意元素且元素的下标也都是从0开始的,这点与数组相同,但不同的是数组中的下标不能为负数,而列表可以其表示的是从右到左,而正数则是从左到右
- b.列表中支持切片查看,也就是查看某一段元素其用法为:list[开始位置:结束位置:步长]其中所有元素都可以省,只需要在括号中有一个元素即可例如:
- list[: :2]表示开始为0,结束为列表尾,步长为2
下面我们任然以一段简单的代码来展示其用法:
|
#在 Don't panic变为 on tap phrase = "Don't panic" plist = list (phrase) new_phase = ''.join(plist[ 1 : 3 ]) #在列表中截取on print (new_phase) new_phase = new_phase + ''.join([plist[ 5 ],plist[ 4 ],plist[ 7 ],plist[ 6 ]]) #切片的实例,以及负数 plist[ - 1 ] # c temp = plist[ 5 : 1 : - 1 ] #[' ', 't', "'", 'n']当步长为负数时其结果时从右到左遍历 temp2 = plist[:: 2 ] #['D', 'n', 't', 'p', 'n', 'c'],从头遍历到尾步长为2 |
事实上对于存储类似对象的时候我们一般是使用列表,而对于那种有结构的数据是列表就显得不那么实用了因为列表很难存储数据之间的结构
所以对于那种结构化的数据我们一般采用字典来存储
二.字典(dict)
字典使用来保存一个键值对集合,其中每个唯一的键都有一个与之对应的值,通常我们把字典称为关联数组,如果你学过java的那么对字典就不会陌生了因为它其实就是java中的set集合,python的字典是无序的它不会保留你插入时的顺序,同时由于字典使用的是一种高度优化的散列算法所以即使是没有顺序字典一样能快速的访问与一个键相关的值
1字典的定义:
其结构为{键1:值1,键2:值2},可以看出字典的开始和结束都是用大括号键和值用冒号隔开,不同键值对之间用逗号分隔,其中值可以为列表,另一个字典
2字典的增加:
字典时一个动态的集合他可以在键对不存在时插入新的键值对,但是字典中键必须进行初始化后才可以引用例如:在一个商店中你不知到你的商店中的苹果又没有时
你不可以直接的使用苹果这个值而当你像添加时也需要查明商店中是否有这样物品,对于字典则无需这样。因为字典已经分装好了一个setdefault()方法只需直接调用即可
下面用一段简单代码展示:
|
#字典的添加键值对 fruit = {} #当直接使用不存在的键值对时 fruit[ 'apple' ] + = 1 #没有对该键初始化而直接使用会出现keyError #当不使用setdefault方法时动态的增加键值对 if 'apple' not in fruit: fruit[ 'apple' ] = 0 #初始化键值 fruit[ 'apple' ] + = 1 #增加苹果的量 print (fruit[ 'apple' ]) #使用setdefault时,其实就是设置一个默认值,确保使用时这个使用的键存在即可 fruit.setdefault( 'apple' , 0 ) #当键存在时这个语句没有任何作用,相当于上面选择的分装 fruit[ 'apple' ] + = 1 print (fruit[ 'apple' ]) |
3字典的遍历:
对于一个集合来说我们一般都会采用集合来遍历其中的所有元素但是对于字典来说单单只用循环的话并不够方便因为仅仅只用循环的话解释器只会处理字典的键
对于其值任然需要用键来查值,对于这种问题python提供了一个items()的方法使得可以直接使用循环变量来访问字典的键和值
下面通过一段简单的代码说明:
|
fruit = { 'apple' : 10 , 'pears' : 5 , 'bananas' : 20 , 'orange' : 4 } #直接使用for循环遍历 for i in fruit: print ( "种类" ,i, "数量" ,fruit[i]) #使用items方法遍历 for i,v in fruit.items(): print ( "种类" ,i, "数量" ,v) |
4字典的元素删除:
python的字典删除有三种方法,一种是clear()是删除字典中的所有元素,二是pop()根据pop中的参数删除与其键相同的键值对,三是popitem()随机删除字典中的元素
对于有结构的数据我们使用字典时会显得非常方便,因为他不仅可以保存结构,还可以保证记录不重复,但是对于那些没有结构的数据我们又不希望他们重复时,字典和列表显然都不适合我们使用了,这时我们就会想到使用集合了
三.集合(set)
1集合的定义:
{元素1,元素2,元素3.....}和字典一样都是用大括号定义,不过不同的是其中没有冒号分割,还有一种定义方法是向set()函数中传递任意一个序列(如一个字符串set('fsdaf'))
2集合的运算:
python中的集合同于数学中的集合同样有交,并,差等运算其中并算提供方法union(),差集方法difference()不过这里不同的是只能显示使用该方法的集合中不同于另一个集合的所有元素,交集的方法intersection()显示相同的元素
下面用代码来实现上述方法:
|
#集合的运算 temp = { 'a' , 'e' , 'i' , 'o' , 'u' } temp2 = set ( "fda" ); #交运算 result = temp.intersection(temp2) #{'a'} #并运算 result = temp.union(temp2) #{'a', 'o', 'f', 'd', 'u', 'e', 'i'} #差运算 result = temp.difference(temp2) #{'o', 'e', 'u', 'i'} |
我们知道变量有两种一种是变量一种是常量,变量的值可以重新赋予,而常量的值则不行,在python中我们同样有一个不变的结构叫做元组
四.元组(tuple)
1元组的定义:
元组与列表密切相关列表是用中括号定义而元组则是用小括号定义(元素1,元素2,元素3,.....),值得注意的是当只有一个对象是并不能仅仅(对象)这样定义并不是元组,正确的定义方法是(对象,)这样才是元组
在最后我有必要说明一下:在这四个内置结构为空时的解释器的表示方法:1.空列表[] 2.空字典{} 3.空集合set() 4.空元组()
以上所述是小编给大家介绍的python的四种内置数据结构详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对开心学习网网站的支持!
原文链接:https://www.cnblogs.com/sank/p/10088766.html
- python计算csv的行数(对Python 多线程统计所有csv文件的行数方法详解)
- 零基础学计算机二级python(计算机二级python学习教程1 教大家如何学习python)
- python基础教学之125 装饰器简介(python3 property装饰器实现原理与用法示例)
- python开发网站github(使用 Python 玩转 GitHub 的贡献板推荐)
- python标准库操作键盘(Python中捕获键盘的方式详解)
- python列表和条件组合的处理(一篇文章带你弄懂Python基础之列表相关操作和嵌套)
- python读取word的表格(Python使用reportlab模块生成PDF格式的文档)
- python中怎么查看函数的用法(Python中函数的基本定义与调用及内置函数详解)
- python调用elasticsearch(Python-ElasticSearch搜索查询的讲解)
- python如何判断文件是否结束(python判断文件是否存在,不存在就创建一个的实例)
- python 循环遍历新方法(python for 循环获取index索引的方法)
- python中对象方法和顶级方法(Python3.5面向对象程序设计之类的继承和多态详解)
- pythonselenium怎么设置元素(Python2 Selenium元素定位的实现8种)
- 如何用python处理excel表格(零基础使用Python读写处理Excel表格的方法)
- 未来10年python前景(Python应用领域和就业形势分析总结)
- python获取股票每天k线(使用PyQtGraph绘制精美的股票行情K线图的示例代码)
- 古代的鸽子是爱情的象征,并非和平的使者(古代的鸽子是爱情的象征)
- 一课译词 放鸽子(一课译词放鸽子)
- 终于来了,淘宝更改账户名测试中,快去看看你能不能修改(淘宝更改账户名测试中)
- 淘宝支持账号名修改,网友 终于可以 重新做人 了(淘宝支持账号名修改)
- 盘点那些年让人称奇的年终奖 最后一个赢辣条毫无悬念(盘点那些年让人称奇的年终奖)
- 你还没有升职吗 他竟因为几套激励理论,升职了(你还没有升职吗)
热门推荐
- php逻辑技巧图解(php版本CKEditor 4和CKFinder安装及配置方法图文教程)
- 常见NoSQL数据库
- docker执行shell脚本(基于Docker搭建ELK 日志系统的方法)
- System.Action委托
- dedecms如何更改文章发布时间(Dedecms实现自动统计当前栏目文档总数的方法)
- sql server批量导出数据(SQL Server 批量插入数据的完美解决方案)
- canvas时钟代码(canvas实现烟花的示例代码)
- python3yield使用教程(python中yield的用法详解——最简单,最清晰的解释)
- vuex-table行列转换效果(vue3+el-table实现行列转换)
- laravelblade组件(laravel 验证错误信息到 blade模板的方法)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9