数据结构(Data Structures)是用来存储一系列相关数据的集合。
Python中有四种内置的数据结构——列表(List)、元组(Tuple)、字典(Dictionary)和集合(Set)。
四种内置数据结构主要区别一览表
列表 元组 字典 集合
项目可变性 有 无 有 有
项目有序性 有 有 有 无
一、列表
用于保存一系列有序项目的集合,项目的列表应该用方括号括起来,可以添加、移除、排序或者搜索列表中的项目,是一种可变的数据类型。可向列表中存储任何类型的对象,甚至是其它列表。
若我们设置了一个列表名为list:list=['a','c','f','d','m']
若要向list中添加一个项目,则如:list.append('e')
若要向list中删除一个项目,则如:del list[0]#删除列表中第一个项目
若要对列表中的项目进行排序,则如:list.sort()#按照每个项目字母顺序排列
若要搜索列表中的项目,则如:list[2]#即搜索列表中第三个项目
二、元组
用于将多个对象保存到一起,可以近似看做列表,但元组是不可变的,即不能编辑或更改元祖。元组是通过特定指定项目来定义的,在指定项目时,你可以给它们加上括号,并在括号内部用逗号分隔。元组可以包含子元组。
若我们设置了一个元组名为zoo:zoo=('monkey','snail','snake','bird')
新元组包含旧元组,但并不改变旧元组:new_zoo='elephant','frog',zoo
搜索新元组的第二个对象: new_zoo[1]
搜索新元组中的旧元组的第三个对象: new_zoo[2][2]
若要设置一个空元组,则如:empty()
若要设置一个只含一个项目的元组,则如:one(1,)#必须在第一个项目后加一个逗号
三、字典
类似于一本地址薄,找到姓名,就能找到地址。姓名之于地址就像是键值(keys)之于值(value)。注意:在这里键值必须是唯一的;字典中的成对的键值-值配对不会以任何方式进行排序。
字典的构成形式:name={key:value1,key2:value2}#若是key和value是字符串,要分别加引号。
若我们设置了一个字典名为ab:ab={
'Swaroop':'swaroop@swaroopch.com',
'Larry':'larry@wall.org',
'Matsumoto':'matz@ruby-lang.org',
'Spammer':'spammer@hotmail.com'
}
若要删除一对键值-值配对,则如:del ab['Spammer']
若要添加一对键值-值配对,则如:ab['Guido']='guido@python.org'
若要访问字典中的每一对键值-值配对信息,并打印出来,则如:
for name, address in ab.items():
print('Contact {} at {}'.format(name,adress))
四、序列
列表、元组和字符串都可以看做序列。序列的主要功能是资格测试和索引操作,允许直接获取序列中的特定项目。除了列表、元组和字符串,还有一种切片(Slicing)运算符。
假设存在一个列表名为mylist:mylist=['a','b','c','d','e','f']
mylist[1:3]:则表示访问b和c
mylist[1:-1]:表示访问b,c,d,e(-1表示序列最后一个项目,-2表示序列中倒数第二个项目)
mylist[:]:表示访问全部
mylist[::2]:表示访问a、c和e#第三个数表示切片的步长
mylist[::-1]:表示访问f、e、d、c、b和a#当第三个数为负数时,第一个数默认为-1
五、集合
是简单对象的无序集合。当集合中的项目存在与否比起次序或其出现次数更加重要时,我们就会使用集合。通过使用集合,可以测试某些对象的资格或情况,检查它们是否是其它集合的子集,找到两个集合的交集等等。
假设存在一个集合名为bri:bri=set(['brazil','russia','india'])
检查某个对象是否存在于集合:'brazil' in bri
添加某个对象:bri.add('china')
删除某个对象:bri.remove('russia')
复制集合并重新命名:bric=bri.copy()
b是否是a的的超集:b.issuperset(a)
交集:bric&bri 或者 bri.intersection(bric)
六、有关字符串的更多内容:
假设存在一个字符串名为name:name='Swaroop'
查找字符串是否以给定的字符串内容开头:name.startwith('Swa')
定位字符串中给定的子字符串的位置:name.find('war')#如果找不到war,会返回-1
联结序列中的项目:a为字符串,b为序列
a.join(b)#字符串将会作为每一项目间的分隔符