🌋数据结构以前是用java学习的,那都是大一大二的事情了,早忘的差不多了,前段日子刷力扣的数据结构有点忘了,于是打算近期捡起来,让我们用python学习一遍。
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)
list(range(10))
range(5,10)
list(range(5,10))
list(range(5,10,2))
list(range(10,1,-1))
3.1 列表
列表是零个或多个指向 Python 数据对象的引用的有序集合,通过在方括号内以逗号分隔的一 系列值来表达。空列表就是[]。列表是异构的,这意味着其指向的数据对象不需要都是同一个类, 并且这一集合可以被赋值给一个变量。 举例:
mylist=[1,3,True,6.5]
mylist[0]
mylist[2]+mylist[1]
mylist[1:3]
for i in mylist:
print(i)
1
3
True
6.5
mylist.append(9)
mylist.insert(1,2)
mylist.pop()
mylist.pop(1)
mylist.sort()
mylist.reverse()
del mylist[1]
mylist.index(1)
mylist.insert(1,9)
mylist.count(9)
mylist.remove(9)
3.2 字符串
字符串是零个或多个字母、数字和其他符号的有序集合。这些字母、数字和其他符号被称为 字符。常量字符串值通过引号(单引号或者双引号均可)与标识符进行区分。 举例:
myname="aaron"
myname.upper()
myname.center(10)
myname.find("r")
myname.split("r")
总结:列表和字符串的主要区别在于,列表能够被修改,字符串则不能。列表的这一特性被称为可修改性。列表具有可修改性,字符串则不具有。例如,可以通过使用下标和赋值操作来修改列表中的一个元素,但是字符串不允许这一改动。
看一下:
3.3 元祖
元组与列表非常相似。它们的区别在于,元组和字符串一样是 不可修改的。元组通常写成由括号包含并且以逗号分隔的一系列值。与序列一样,元组允许之前 描述的任一操作。 举例:
mytuple=(2,True,4.96)
len(mytuple)
mytuple[2]
元祖不可修改
3.4 集合
集合是由零个或多个不可修改的 Python 数据对象组成的无序集合。集不允许重复元素, 并且写成由花括号包含、以逗号分隔的一系列值。 举例:
myset={3,6,"dog","cat",False}
len(myset)
False in myset
'pink' in myset
举例:
myset
yourset={99,3,100}
myset.union(yourset)
myset | yourset
myset.intersection(yourset)
myset.difference(yourset)
myset-yourset
{99,100}.issubset(yourset)
{99,100}<=yourset
myset.add(101)
myset.remove(101)
myset.pop()
myset.clear()
3.5 字典
字典是无序结构,由相关的元素对构成,其中每对元素都由一个键和一个值组成。这种键–值对通常写成键:值的形式。字典由花括号包含的一系列以逗号分隔的键–值对表达。 举例:
mydict={"name":"aaron","sex":"man"}
mydict["name"]
mydict["old"]=18
len(mydict)
mydict.get("sex")
mydict.get("class","不存在")
参考资料
《python数据结构与算法》 《大话数据结构》
|