python数据结构:数据类型
作者:柳小葱 发布时间:2022-05-05 01:54:19
1.数据是什么?
在 Python
以及其他所有面向对象编程语言中,类都是对数据的构成(状态)以及数据 能做什么(行为)的描述。由于类的使用者只能看到数据项的状态和行为,因此类与抽象数据类 型是相似的。在面向对象编程范式中,数据项被称作对象。一个对象就是类的一个实例。
2.数据类型
2.1内建原子数据类型
Python
有两大內建数据类实现了整数类型和浮点数类型,相应的 Python
类就是 int
和 float
。标准的数学运算符,即+、-、*、/以及**(幂),可以和能够改变运算优先级的括号一起使用。其他非常有用的运算符包括取余(取模)运算符%,以及整除运算符//。注意,当两个整数相除时,其结果是一个浮点数,而整除运算符截去小数部分,只返回商的整数部分。
Python 通过 bool 类实现对表达真值非常有用的布尔数据类型。布尔对象可能的状态值是 True 或者 False,布尔运算符有 and、or 以及 not。
其实这一章最想让大家知道的变量赋值的问题:
theSum = 0
赋值语句 theSum = 0
会创建变量 theSum,并且令其保存指向数据对象 0 的引用。Python
会先计算赋值运算符右边的表达式,然后将指向该结果数据对象的引用赋给左 边的变量名。在本例中,由于 theSum
当前指向的数据是整数类型,因此该变量类型为整型。
如果数据发生了变化怎么办,比如:
theSum=True
这个时候变量的类型也会变成布尔类型。赋值语句改变了变量的引用,这体现了 Python
的动态特性。同样的变量 可以指向许多不同类型的数据。
2.2 内建集合数据类型
除了数值类和布尔类,python还有众多强大的内建集合类。我们将它们分为两类:
有序集合:列表、字符串、元祖
无需集合:集合、字典
说明一下,有序集合中有些方法是可以相互通用的,因为它们的性质很相似。无需集合也是一样,但是它们都是属于数据集合,会有一些大家公共的方法。
3.集合数据类型的方法
这一章节主要讲述列表、字符串、元祖、集合、字典各自的内置函数。
在这之前先介绍一下range
函数。range
是一个常见的 Python
函数,我们常把它与列表放在一起讨论。range
会生成一个代 表值序列的范围对象。使用 list 函数,能够以列表形式看到范围对象的值。rang
的一些用法。
range(10)#默认从0开始
#结果range(0, 10)
list(range(10))
#[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
range(5,10)
#结果range(5, 10)
list(range(5,10))
#[5, 6, 7, 8, 9]
list(range(5,10,2))
#[5, 7, 9]
list(range(10,1,-1))
#[10, 9, 8, 7, 6, 5, 4, 3, 2]
3.1 列表
列表是零个或多个指向 Python
数据对象的引用的有序集合,通过在方括号内以逗号分隔的一 系列值来表达。空列表就是[]。列表是异构的,这意味着其指向的数据对象不需要都是同一个类, 并且这一集合可以被赋值给一个变量。
举例:
#列表
mylist=[1,3,True,6.5]
#结果:[1, 3, True, 6.5]
mylist[0]
#结果 1
mylist[2]+mylist[1]
#结果 4
mylist[1:3]#只显示index为1,2
#结果 [3, True]
for i in mylist:
print(i)
#结果
True
6.5
mylist.append(9)
#[1, 3, True, 6.5, 9]
mylist.insert(1,2)#在index为1的位置插入2
#[1, 2, 3, True, 6.5, 9]
mylist.pop()#删除并返回最后一个数
# 结果 9
mylist.pop(1)#删除并返回index为1的数
#结果 2
mylist.sort()#排序
#[1, True, 3, 6.5]
mylist.reverse()#反转数组
#[6.5, 3, True, 1]
del mylist[1]#删除index为1的元素
mylist.index(1)# 返回元素为1的元素下标
mylist.insert(1,9)#在index位置插入元素9
mylist.count(9)#返回9在数组中出现的次数
mylist.remove(9)#移除元素9
3.2 字符串
字符串是零个或多个字母、数字和其他符号的有序集合。这些字母、数字和其他符号被称为 字符。常量字符串值通过引号(单引号或者双引号均可)与标识符进行区分。
举例:
myname="aaron"
#结果 aaron
myname.upper()#转化大写
#结果 'AARON'
myname.center(10)#填充空格
#结果为' aaron '
myname.find("r")
#结果为 2
myname.split("r")#分割子串,如果没有提供分隔字符,那么 split 方法将会寻找如制表符、换行符和空格等空白字符。
#结果为 ['aa', 'on']
总结:列表和字符串的主要区别在于,列表能够被修改,字符串则不能。列表的这一特性被称为可修改性。列表具有可修改性,字符串则不具有。例如,可以通过使用下标和赋值操作来修改列表中的一个元素,但是字符串不允许这一改动。
看一下:
3.3 元祖
元组与列表非常相似。它们的区别在于,元组和字符串一样是 不可修改的。元组通常写成由括号包含并且以逗号分隔的一系列值。与序列一样,元组允许之前 描述的任一操作。
举例:
mytuple=(2,True,4.96)
#(2, True, 4.96)
len(mytuple)
#结果 3
mytuple[2]
#结果 4.96
注意:元祖不可修改
3.4 集合
集合是由零个或多个不可修改的 Python
数据对象组成的无序集合。集不允许重复元素, 并且写成由花括号包含、以逗号分隔的一系列值。
举例:
myset={3,6,"dog","cat",False}
#{3, 6, False, 'cat', 'dog'}
len(myset)
#结果 5
False in myset #false是否在集合中
#结果 true
'pink' in myset
#结果 false
举例:
myset
#{3, 6, False, 'cat', 'dog'}
yourset={99,3,100}
#{3, 99, 100}
myset.union(yourset)#取并级
#{100, 3, 6, 99, False, 'cat', 'dog'}
myset | yourset#取并集
#{100, 3, 6, 99, False, 'cat', 'dog'}
myset.intersection(yourset)#取交集
#{3}
myset.difference(yourset)#取差集
#{6, False, 'cat', 'dog'}
myset-yourset#取差集
#{6, False, 'cat', 'dog'}
{99,100}.issubset(yourset)#判断是否为子集
#True
{99,100}<=yourset#判断是否为子集
#True
myset.add(101)
#{101, 3, 6, False, 'cat', 'dog'}
myset.remove(101)#移除元素
#{3, 6, False, 'cat', 'dog'}
myset.pop()#随机移除元素(这里移除了false)
#False
myset.clear()#清空集合
#set()
3.5 字典
字典是无序结构,由相关的元素对构成,其中每对元素都由一个键和一个值组成。这种键–值对通常写成键:值的形式。字典由花括号包含的一系列以逗号分隔的键–值对表达。
举例:
mydict={"name":"aaron","sex":"man"}
#{'name': 'aaron', 'sex': 'man'}
mydict["name"]
#'aaron'
mydict["old"]=18#添加一对key- value
#{'name': 'aaron', 'sex': 'man', 'old': 18}
len(mydict)
#3
mydict.get("sex")
#'man'
mydict.get("class","不存在")#如果前面的不存在,就返回第二个
#'不存在'
参考资料:
《python数据结构与算法》
《大话数据结构》
来源:https://blog.csdn.net/weixin_48077303/article/details/118991229
猜你喜欢
- 使用环境:人才网项目中有一个简历保密设置,其中有一个过滤关键词,只有某个企业的公司名中包含有其中的一个关键字,就不显示该份简历,当然,我还没
- 微软今天宣布正式发布SQL Server 2008服务器软件,这将帮助微软与Oracle 11g,IBM DB2 9.5数据库产品对抗.此前
- 传统的HTML页面中连动下拉框采用了两种方法:1)直接将下拉框中的内容hardcode于html的javascript中,调用javascr
- CSS执行顺序与优先权的问题其实就是一个冲突解决的问题,当同一个元素(或内容)被CSS选择符选中时,就要按照优先权取舍不同的CSS规则,这其
- 如何在数据库中限制检索行数?为了照顾显示器屏幕的大小,使检索结果更整齐明了一些,请问,可以控制数据库的检索行数吗? &
- time 模块主要包含各种提供日期、时间功能的类和函数。该模块既提供了把日期、时间格式化为字符串的功能,也提供了从字符串恢复日期、时间的功能
- 前言:Python中for循环和while循环本质上是没有区别的,但是在实际应用上,针对性不太一样。for循环,主要应用在遍历中,体现的是遍
- 一 前言pandas学到分组迭代,那么基础的pandas系列就学的差不多了,自我感觉不错,知识追寻者用pandas处理过一些数据,蛮好用的;
- 其实微信公众平台的多客服功能已经出来好久了,并且一出来的时候我就已经为自己的公众号实现了,原本以为大家都已经会了,但是今天还是有人问起这个多
- 一、利用ASP和ADO实现数据库操作的工作流程ASP内嵌了五个对象Resquest、Response、Server、Seesion、Appl
- <?php /** * 单例模式 * * 保证一个类仅有一个实例,并提供一个访问它的全局访问点 * */ class Singleto
- 我们有理由相信采用新的内核版本(2.2.16-3 smp)也应该有性能的提升: OS2: Newer minor version kerne
- 特点:1.图片预载入,载入后再显示。意图一次呈现,不会让一块一块下载破坏你的页面,绝佳的用户体验,颠覆传统的浏览器呈现图片的处理方式(需要后
- 修复Access数据库,我们一般使用微软Office 97中带的Access 97对数据库进行修复和整理。Access数据库被损坏分以下几种
- asp使用session来防止表单多次被提交的方法。formtest.asp' 表单文件<%Randomize&nb
- 在今天的设计中,排版常常被忽视,特别是被网页设计师忽视。这真是件遗憾的事情因为CSS可以做很多事情来控制我们的排版。也就是说,我们被局限于某
- 下面,小编将通过一组实例演示,让大家更直观,更清楚明白的了解要设置中文这一内容的操作步骤。首先展示实例代码:import pygamefro
- 系统自带模块(库)```cppimport retarget = 'abc1234xyz're.search('(\
- 分页设计我们经常会见到,这里有30个分页设计,以供大家欣赏欣赏借鉴。
- ASP结合ADO对数据库方便快捷的访问、结合XML、COM/ActiveX等其它技术 实现服务器多层结构的功能使它在今天还有着顽强的生命力。