一、List数据类型
1、概述:list(列表)中可以包含多个元素,且元素类型可以不相同。
每一元素可以是任意数据类型,包括列表(即列表嵌套)及后面要介绍的元组、集合、字典。
所有元素都写在一对方括号 "[ ]" 中,每个元素之间用逗号分隔。
对于不包含任何元素的列表,即[ ],称位空列表。
2、列表元素索引:
(1)列表中元素的索引方式与字符串中元素的索引方式完全相同,也支持从前向后索引和从后向前索 引两种方式
(2)与字符串相同,利用下标“[]”可以从已有列表中取出其中部分元素形成一个新列表,其语法格式为:ls[beg:end]
其中,beg是要取出的部分元素在ls中的起始下标,end是要取出的部分元素在ls中的结束下标。
注意:省略beg,则表示从ls中的第一个元素开始,等价于ls[0:end];省略end,则表示要取出的部分元素从beg位置开始
一直到最后一个元素(包括最后一个元素);beg和end都省略则取出ls中的所有元素。
(3)例如:
对于ls=[1, 2.5, 'test', 3+4j, True, [3,1.63], 5.3]这个列表,其各元素的下标为:
3、访问单个元素:
如果只访问列表ls中的某一个元素,则可以使用下面的写法:ls[idx],其中,idx是要访问的元素的下标
ls=[1, 2.5, 'test', 3+4j, True, [3,1.63], 5.3]
print(ls[2]) #输出“test”
print(ls[-3]) #输出“True”
注意:ls[beg:end]返回的仍然 是 一 个 列 表 ; 而ls[idx]返回的是列表中的一个元素。
4、元素修改:
通过下标“[ ]” 不仅可以访问列表中的某个元素,还可以对元素进行修改,例如
print(ls) #输出“[1, 2.5, 'test', (3+4j), True, [3, 1.63], 5.3]”
ls[2]=15 #将列表ls中第3个元素的值改为15
ls[1:4]=['python',20] #将列表ls中第2至4个元素替换为['python',20]中的元素
ls[0:2]=[] #将列表ls中前两个元素替换为空列表[],即将前两个元素删除
注意:在对列表中的元素赋值时,既可以通过“ls[idx]=a”这种方式修改单个元素的值,也可以通过“ls[beg:end]=b”这种方式修改一个元素或同时修改连续多个元素的值。但需要注意,在通过“ls[beg:end]=b”这种方式赋值时,b是另一个列表,其功能是用b中个元素替换ls中beg至end-1这些位置上的元素,赋值前后列表元素数量允许发生变化。
二、Tuple数据类型
1、概述:Tuple(元组)与列表类似,可以包含多个元素,且元素类型可以不相同,书写时每两个元素之间也是用逗号分隔。与列表的不同之处在于:元组的所有元素都写在一对小括号“()”中,且元组中的元素不能修改。对于不包含任何元素的元组,即(),称为空元组。
2、元组元素索引:
元组中元素的索引方式与列表中元素的索引方式完全相同。与列表相同,利用下标“[]”可以从已有元组中取出其中部分元素形成一个新元组,其语法格式为:t[beg:end]其中,t为元组,beg是要取出的部分元素在t中的起始下标,end是要取出的部分元素在t中的结束下标。
3、单一元素访问:
如果只访问元组t中的某一个元素,则可以使用下面的写法:
t[idx] 其中,idx是要访问的元素的下标
注意:字符串、列表和元组的元素都是按下标顺序排列,可通过下标直接访问,这样的数据类型统称为序列。其中,字符串和元组中的元素不能修改,而列表中的元素可以修改。
三、Set数据类型
1、概述:与元组和列表类似,Set {集合} 中同样可以包含多个不同类型的元素,但集合中的各元素无序、不允许有相同元素且元素必须是可哈希(hashable)的对象。可哈希对象是指拥有__hash__(self) 内置函数的对象。列表、集合和字典类型的数据不是可哈希对象,所以它们不能作为集合中的元素。元组、字符串和数值都是可哈希对象。
2、创建集合:
集合中的所有元素都写在一对大括号“{}”中,各元素之间用逗号分隔。创建集合时,既可以使用{},也可以使用set函数。set函数的语法格式如下:set([iterable])其中,iterable是一个可选参数,表示一个可迭象。
注意:可迭代(iterable)对象是指可以一次返回它的一个元素,如前面学习的字符串、列表、元组都是可迭代的数据类型。
例如:1.a={10, 2.5, 'test', 3+4j, True, 5.3, 2.5}
2.print(a) #输出“{True, 2.5, 5.3, 10, (3+4j), 'test'}”
3.b=set('hello')
4.print(b) #输出“{'e', 'l', 'o', 'h'}”
5.c=set([10, 2.5, 'test', 3+4j, True, 5.3, 2.5])
6.print(c) #输出“{True, 2.5, 5.3, 10, (3+4j), 'test'}”
7.d=set((10, 2.5, 'test', 3+4j, True, 5.3, 2.5))
8.print(d) #输出“{True, 2.5, 5.3, 10, (3+4j), 'test'}”
3、注意:
与字符串、列表、元组等序列类型不同,集合中的元素不能使用下标方式访问。集合主要用于做并、交、差等集合运算,以及基于集合进行元素的快速检索。{}用于创建空字典,如果要创建一个空集合,则需要使用set()。
四、Dictionary数据类型
1、概述:Dictionary{字典}是另一种无序的对象集合。但与集合不同,字典是一种映射类型,每一个元素是一个键(key):值(value)对。键必须是唯一的,即不同元素的键不能相同;另外,键必须是可哈希数据,即键不能是列表、集合、字典等类型;值可以是任意类型。对于不包含任何元素的字典,即{},称为空字典。
2、创建字典:
(1)既可以使用{},也可以使用dict函数。如果要创建一个空字典,可以使用{}或dict()。例如:
a={}
b=dict()
执行完毕后,a和b是两个不包含任何元素的空字典。
(2)如果在创建字典的同时,需要给出字典中的元素,则可以使用下面的方法:
1. {k1:v1,k2:v2,…,kn:vn} #ki和vi(i=1,2,…,n)分别是每一个元素的键和值
2. dict(**kwarg) #**kwarg是一个或多个赋值表达式,两个赋值表达式之间用逗号分隔
3. dict(z) #z是zip函数返回的结果
4. dict(ls) #ls是元组的列表,每个元组包含两个元素,分别对应键和值
5. dict(dictionary) #dictionary是一个已有的字典
这5条语句创建的5个字典对象的元素完全相同,使用print函数查看每一个变量,都能得到如下输出结果:
{'one': 1, 'two': 2, 'three': 3}
(3)zip函数的参数是多个可迭代的对象(列表等),其功能是将不同对象中对应的元素分别打包成元组,然后返回由这些元组组成的列表。在Python 3.x中为了减少内存,zip函数返回的是一对象,可以通过list函数转换 为 列 表 , 如 通 过“list(zip(['one','two','three'],[1,2,3]))” 可 得 到 列 表“ [('one', 1), ('two', 2),('three', 3)]”。
3、访问字典元素
与列表等序列对象不同,在访问字典中的元素时不能通过下标方式访问,而是通过键访问。例如:
1.info={'name':'张三', 'age':19, 'score':{'python':95,'math':92}}
2.print(info['name']) #输出“张三”
3.print(info['age']) #输出“19”
4.print(info['score']) #输出“{'python': 95, 'math': 92}”
5.print(info['score']['python']) #输出“95”
6.print(info['score']['math']) #输出“92”
披荆斩棘,仗剑天涯