一.般把四个list,set,tuple,dict复合数据类型叫做容器,这些容器都是开辟在堆中的,是python提供用来存放大量数据的一种数据结构。
二.列表(list):是按照一定的线性顺序,排列而成的数据项的集合,是一种线性表,是python底层基于双向链表实现的。由大量的节点组成,每一个节点都可以存储数据。所以列表可以存储大量的数据
1.python中如何使用列表,定义列表:
①调用系统的一个全局函数list()
a=list() #创建了一个空列表
a=list([n1,n2,n3…nn]),创建列表并赋值
②可以利用弱数据类型语言的特点来创建列表
b = [1,2,3,4,5]
2.访问列表中的元素
通过下标访问;(下标从0开始,注意下标不能越界)
赋值:列表[下标] = 新值
3.遍历元素
for 变量 in 容器;
while循环: index = 0
while index < len(a) :
print(a[index])
Index += 1
4.列表的长度问题:
全局函数len len(列表名)
列表的本质是一个对象:想扩展列表,python提供了大量的列表方法,调用就可以完成需要的功能。
5.列表的常用方法:
1>.append:能够在列表末尾添加一个新的元素
2>.clear:会清除列表中的所有元素
3>.copy:复制列表(浅拷贝)
复制和赋值的区别:复制会在堆中再开辟一个内存用来存放复制出来的列表,该列表和原来的列表不同步;而赋值的列表会和原列表同步;
4>.count:返回某个数字的重复次数(统计某个元素在列表中的个数)
5>.index:查询(返回)元素在列表中第一次出现的下标位置,如果列表中不存在该元素,则抛出异常
6>.insert:指定要插入的元素的位置,eg:a.insert(2,"xiaozhan")
7>.remove:移除,移除的是对应的元素值,如果列表中不存在该元素, 则抛出异常
8>.pop:通过下标移除元素,默认没有下标的话,移除的是最后一个元素
9>.reverse:倒叙,反转元素的顺序
10>.sort:排序,(主要针对数据)按照数值大小排序
11>.extend:扩展,a.extend(b),合并列表
三.集合(set)
1>定义:
使用全局函数 set()
S = set({1,3,5,9,5}) (在python中使用“{}”定义的不一定就是set,也有可能是字典,想要是set,就要在{}里面写值)
2>集合的特点:
元素唯一,且元素无序,所以不能用下标去访问
3>集合的常用方法:
①add:在集合末尾添加元素
②clear:清除
③difference:求差集
④intersection:求交集
⑤union:并集
⑥pop:随机移除
⑦remove:移除元素
⑧discard:集合中有要移除的元素,则移除,没有移除的元素,则没有变化,不报错
四.元组(tuple):表示固定的,不变的值(不可变类型),类似于常量
1>定义:
使用()表示 t = tuple(()),
注意:a=(),type(a)是元组,但是a=(1),type(a)=int,解决这个问题的方法是:a = (100,)原因是python解释器将元组当成一个数字对待()是数学上的含义
2>常用方法
count ,index
注意:元组是不可变类型,意味着元组中的值定义好后,再无法修改,但是,如果元组的元素是可变类型,那么该元组是可变的 eg:t = (1,2,3,6,[1,3,6,8]),下标为4的元素是列表,是可变的,所以,t[4] = [1,2,36,8,52]
五.字典():结构是:二维表,key必须是字符串,values可以是任意类型
1>定义:
d1 = {} d1 = dict() d2 = dict({"name":"zhao","age":17})
2>访问:
d2[“name”],通过key来确定值,当key相同时,会覆盖前面的值;如果key不存在,则新增这个key
3>常见的方法:
①get:通过key或者key对应的值,如果没有这个key,则返回none,表示没有这个值
②keys:返回所有的key
③values:返回所有的值
④items:成对返回键值对
⑥pop:通过key,删除对应的键值对,注意:如果该键值对不存在,则抛出异常
⑦popitem:按照后进先出(LIFO)的方法去移除键值对,没有参数。
(LIFO:后进先出法是指假定后入库的存货先发出,据此计算发出存货成本的方法。采用后进先出法时,每批发出存货的成本,按存货中最后入库的那批单价计算,如果发出存货的一批数量超过最后入库的那一批数量,超过部分依次按上一批入库的单价计算。)
六.字典迭代问题:
1>对key进行迭代
①for k in d2 :
Print(k)
②for k in d2.keys():
Print(k,d2[k])
2>对value进行迭代
for k in d2.values():
Print(k)
3>对key/value一起迭代
for (k,v) in d2.items() :
Print(k,v)