容器数据类型的使用
【●】列表与元组
一、列表
1. 列表的特点
●列表是有序的、可变的数据类型
●列表可以包含不同类型的对象
●列表可以由[]或工厂函数创建
●支持下标及切片操作
2. 更新列表
● 通过下标只能更新值,不能使用下标添加新值
>>> L1 = [1 , 4 , 9 , 12]
>>> L1[0:2]
[1, 4]
>>>
>>> print(L1)
[1, 4, 9, 12]
>>> L1[0:2]
[1, 4]
>>> L1[0:2]=["A","B","C"]
>>> print(L1)
['A', 'B', 'C', 9, 12]
>>>
3. 列表内建函数(对列表操作的函数)
列表名+操作选项+(下标,新值)
● 添加元素D到列表的末尾 append (值)
● 在指定下标前插入元素 insert (下标,值)
● 统计一个元素在列表里中出现的次数 count(值)
● 输出元素在列表里的下标 index(值)
● 用 in 查看元素是否存在于这个列表里 值 + in + 列表名
● 原地翻转列表 reverse “列表名”. reverse()
● 排序(对列表里的元素做升序排序) sort “列表名”. sort()
● 把其他列表里的元素追加到当前列表 extend “当前列表名".extend(列表名)
● 删除 remove 列表名 +.remove(元素)
● 删除 pop 列表名 +.pop() #删除末尾的元素并输出
● append
>>>
>>> L5=list("abcdef")
>>> print(L5)
['a', 'b', 'c', 'd', 'e', 'f']
>>> L5.append("bb")
>>> print(L5)
[ 'a', 'b', 'c', 'd', 'e', 'f', 'bb']
>>>
● insert
>>>
>>> print(L5)
[ 'a', 'b', 'c', 'd', 'e', 'f', 'bb']
>>>
>>> L5.insert(0,"plj")
>>> print(L5)
['plj', 'a', 'b', 'c', 'd', 'e', 'f', 'bb']
>>>
>>>
>>> L5.insert(3,"dmy")
>>> print(L5)
['plj', 'a', 'b', 'dmy', 'c', 'd', 'e', 'f']
>>>
● count
>>> L5.append("dmy")
>>> print(L5)
['plj', 'a', 'b', 'dmy', 'c', 'd', 'e', 'f','dmy']
>>>
>>> L5.count("dmy")
2
>>> x = L5.count("dmy")
>>> print(x)
2
>>>
● index
>>> print(L5)
['plj', 'a', 'b', 'dmy', 'c', 'd', 'e', 'f', 'bb', 'dmy']
>>>
>>> L5.index("bb")
8
>>>
>>> L5.index("dmy")
3
>>>
● in
>>> print(L5)
['plj', 'a', 'b', 'dmy', 'c', 'd', 'e', 'f', 'bb', 'dmy']
>>> 'wk' in L5
False
>>> 'bb' in L5
True
>>> L5.index("bb")
8
>>>
>>> 'wk' in L5
False
>>>
>>> 'wk' not in L5
True
>>>
● reverse
>>> L6=list("9afw")
>>> L6.reverse()
>>> print(L6)
['w', 'f', 'a', '9']
>>>
● sort
>>> L7 = [ 88,23,97,109,11]
>>> print(L7)
[88, 23, 97, 109, 11]
>>> L7.sort()
>>> print(L7)
[11, 23, 88, 97, 109]
>>>
● extend
>>> L8=list("abc")
>>> L9=[1,2,3]
>>> print(L8)
['a', 'b', 'c']
>>> print(L9)
[1, 2, 3]
>>> L8.extend(L9)
>>> print(L8)
['a', 'b', 'c', 1, 2, 3]
>>>
>>> print(L9)
[1, 2, 3]
>>>
● remove
>>> print(L9)
[1, 2, 3]
>>> L9.remove(2)
>>> print(L9)
[1, 3]
>>>
● pop
>>> print(L8)
['a', 'b', 'c', 1, 2, 3]
>>>
>>> L8.pop()
3
>>> print(L8)
['a', 'b', 'c', 1, 2]
>>>
>>> x=L8.pop()
>>> print(L8)
['a', 'b', 'c', 1]
>>> print(x)
2
>>>
二、 元组
1. 创建元组
● 通过()或工厂函数 tuple() 创建元组
● 元组是有序的、不可变类型
● 与列表类似,作用于列表的操作,绝大数也可以作用与元组
● 元组类型的数据也支持下标和切片
● 因为元组类型的数据是不可变的,所以没有添加 删除 修改命令
>>> t1 = ()
>>> type(t1)
<class 'tuple'>
>>> t2 = tuple()
>>> type(t2)
<class 'tuple'>
>>> print(t1)
()
>>> print(t2)
()
>>>
2. 单元素元组
● 如果一个元组中只有一个元素,那么创建该元组的时候,需要加上一个逗号。
>>> t3 = tuple('ABC',)
>>> type(t3)
<class 'tuple'>
3. 元祖判断符号
● in 、 not in
【●】字典
一、字典的基础操作
1.创建字典
● 通过{}操作符创建字典
● 通过dict()工厂方法创建字典
● 通过fromkeys()创建具有相同的默认字典 字典名 = {} .fromkeys((赋值的列,,),值)
>>> d1 = {}
>>> d2 = dict()
>>> type(d1)
<class 'dict'>
>>> type(d2)
<class 'dict'>
>>>
>>> d3 = {}.fromkeys(("tom","lucy","lili"),18)
>>> print(d3)
{'tom': 18, 'lucy': 18, 'lili': 18}
>>>
2.访问字典
● 字典是映射类型,意味着它没有下标,访问字典中的值需要使用相应的键(列名)
>>> d4 = {"name":"bb" , "gender":"boy" , "age":30}
>>> print(d4)
{'name': 'bb', 'gender': 'boy', 'age': 30}
>>>
>>> type(d4)
<class 'dict'>
>>> d4['name']
'bb'
>>> d4['age']
30
>>> d4['gender']
'boy'
>>>
3.更新字典
● 通过建更新字典
— 如果字典中有该键(列名),则更新相关值
— 如果字典中没有该键(列名),则向子典中添加新值(元素)
字典名+['列名']=“值(元素)”
>>> print(d4)
{'name': 'bb', 'gender': 'boy', 'age': 30}
◆ 如果访问的键值存在 是更新 不存储就是添加新元素
>>> d4['school']="tarena"
>>> d4
{'name': 'bb', 'gender': 'boy', 'age': 30, 'school': 'tarena'}
>>>
>>> d4['name']="niuqun"
>>> d4
{'name': 'niuqun', 'gender': 'boy', 'age': 30, 'school': 'tarena'}
>>>
4.删除字典
● 通过 del 可以删除字典中的元素或整个字典
● 使用内部方法 clear() 可以清空字典
● 使用pop()方法可以“弹出”字典中的元素
>>> d4
{'name': 'niuqun', 'gender': 'boy', 'age': 30, 'school': 'tarena'}
>>> del d4['name']
>>> d4
{'gender': 'boy', 'age': 30, 'school': 'tarena'}
>>>
>>> d4.clear()
>>> d4
{}
>>> del d4
>>> print(d4)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'd4' is not defined
>>>
5.字典操作符
●使用字典键查找操作符[],查找键所对应的值
●使用 in 和 not in 判断键是否存在与字典中
>>> d4 = {"name":"bb" , "gender":"boy" , "age":30}
>>> d4
{'name': 'bb', 'gender': 'boy', 'age': 30}
>>>
>>> 'name' in d4
True
>>>
>>> 'bb' in d4
False
>>>
>>> 'bb' not in d4
True
>>>
二、字典相关函数
1.作用于字典的函数
● len():返回字典中元素的数目(统计元素的个数,长度)
● hash():本身不是为字典设计的,但是可以判断某个对象是否可以作为字典的键(列名)
len(变量名) 通用函数 统计长度
>>> s1 = "abc"
>>> len(s1)
3
>>> L1 = list("abcde")
>>> L1
['a', 'b', 'c', 'd', 'e']
>>> len(L1)
5
>>> t1 = ( 99 , 83 , "a" , "f")
>>> t1
(99, 83, 'a', 'f')
>>> len(t1)
4
>>> d4
{'name': 'bb', 'gender': 'boy', 'age': 30}
>>> len(d4)
3
>>>
2.字典内建方法
字典名 + 选项
● dict.copy():返回字典(深复制)的一个副本(拷贝)
● dict.get(列名,()):字典里有这个列名输出它的值(元素),没有会输出自己写的值()
● dict.setdefault(列名,default=None) :字典里没有列名,会输出将列名后的default的值赋予列名值
● dict.items():返回一个包含字典中(键:列名,值:元素)对元组的列表
● dict.keys():返回一个包含字典中键(列名)对元组的列表
● dict.values():返回一个包含字典中所有值的列表
● dict.update():将两个字典合并
● copy() 拷贝
>>> d4.copy()
{'name': 'bb', 'gender': 'boy', 'age': 30}
>>>
>>> dd4 =d4.copy()
>>> dd4
{'name': 'bb', 'gender': 'boy', 'age': 30}
>>> d4
{'name': 'bb', 'gender': 'boy', 'age': 30}
>>>
● get() 方法
>>> d1 = {'name':"bob" , 'age':19 , 'gender':"boy"}
>>> d1
{'name': 'bob', 'age': 19, 'gender': 'boy'}
>>>
>>> d1.get('school')
>>>
>>> d1.get('name')
'bob'
>>>
>>> d1.get('school',"not set define")
'not set define'
>>>
● setdefault() 方法
>>>
>>> d1
{'name': 'bob', 'age': 19, 'gender': 'boy'}
>>>
>>> d1.setdefault('school','达内')
'达内'
>>> d1
{'name': 'bob', 'age': 19, 'gender': 'boy', 'school': '达内 '}
>>>
● items()方法
>>> d1.items()
dict_items([('name', 'bob'), ('age', 19), ('gender', 'boy'), ('school', None), ('class', None)])
>>>
● keys()方法
>>> d1
{'name': 'bob', 'age': 19, 'gender': 'boy', 'school': None, 'class': Non
>>> d1.keys()
dict_keys(['name', 'age', 'gender', 'school', 'class'])
● values()方法
>>> d1
{'name': 'bob', 'age': 19, 'gender': 'boy', 'school': None, 'class': None}
>>>
>>> d1.values()
dict_values(['bob', 19, 'boy', None, None])
● update()方法
>>> d1
{'name': 'bob', 'age': 19, 'gender': 'boy', 'school': None, 'class': None}
>>>
>>> d2 = {"成绩":98 , "排名":5}
>>>
>>> d1.update(d2)
>>> print(d1)
{'name': 'bob', 'age': 19, 'gender': 'boy', 'school': None, 'class': None, '成绩': 98, '排名': 5}
>>>
● 使用 for循环遍历字典
>>> d4
{'name': 'bob', 'age': 19, 'school': 'tarena'}
输出每个元素的key
>>> for i in d4.keys():
... print(i)
...
name
age
school
class
>>>
输出每个元素的值
>>> d4.values()
dict_values(['bob', 19, 'tarena', None])
>>> for i in d4.values():
... print(i)
...
bob
19
tarena
None
>>>
把key 和 key 对应的值 一起输出
>>> d4.items()
dict_items([('name', 'bob'), ('age', 19), ('school', 'tarena'), ('class', None)])
>>>
>>> for i , j in d4.items():
... print(i,j)
...
name bob
age 19
school tarena
class None
>>>
>>> d4
{'name': 'bob', 'age': 19, 'school': 'tarena', 'class': None}
>>>
>>> for i in d4.keys():
... print(d4[i])
...
bob
19
tarena
None
>>>
● 使用 for循环遍历字典
>>> d4
{'name': 'bob', 'age': 19, 'school': 'tarena'}
输出每个元素的key
>>> for i in d4.keys():
... print(i)
...
name
age
school
class
>>>
输出每个元素的值
>>> d4.values()
dict_values(['bob', 19, 'tarena', None])
>>> for i in d4.values():
... print(i)
...
bob
19
tarena
None
>>>
把key 和 key 对应的值 一起输出
>>> d4.items()
dict_items([('name', 'bob'), ('age', 19), ('school', 'tarena'), ('class', None)])
>>>
>>> for i , j in d4.items():
... print(i,j)
...
name bob
age 19
school tarena
class None
>>>
>>> d4
{'name': 'bob', 'age': 19, 'school': 'tarena', 'class': None}
>>>
>>> for i in d4.keys():
... print(d4[i])
...
bob
19
tarena
None
>>>
【●】集合
一、集合基础
1. 创建集合(容器类型 也可以存储多个数据)
● 数学上,把set称做由不同的元素组成的集合,集合(set)的成员通常被称作集合元素
● 集合对象是一组无序排列的可哈希的值
● 集合有两种类型
—可变集合set
—不可变集合frozenset
>>> s1 = set('hello')
>>> s1
{'e', 'l', 'o', 'h'}
>>> type(s1)
<class 'set'>
>>>s2 = frozenset('hello')
>>> s2
frozenset({'e', 'l', 'o', 'h'})
>>>
>>> type(s2)
<class 'frozenset'>
>>>
2. 集合类型操作符
● 集合支持用in和not in 操作符检查成员
● 能够通过len()检查集合大小
● 能够使用for迭代集合成员
● 不能取切片,没有键
集合类型的比较符号 in not in
>>> s3
frozenset({1, 3.14, 'a', 'c'})
>>>
>>> 'plj' in s3
False
>>>
>>> 'c' in s3
True
>>>
>>> 'plj' not in s3
True
>>>
>>> len(s2) #统计集合元素的个数
4
>>> s2
{0, 'a', 3, 'w'}
>>>
● | :联合,取并集 (把符号两边的集合合并并去掉重复值)
● &:交集 (获取集合中都有的数据)
● - :差补 (用符号左边的和右边的作比较,去掉重复的只显示左边的)
>>> s1 = {"西游记","红楼梦","水浒传","三国演绎"}
>>> s2 = {"jingpingmei","mudiangting","聊斋志异","红楼梦"}
>>>
>>> s1 & s2 # 获取集合中都有的数据
{'红楼梦'}
>>>
>>> x = s1 & s2 等效于 s1.intersection(s2)
>>> print(x)
{'红楼梦'}
>>>
>>> s1 | s2 等效于 s1.union(s2)
{'水浒传', '三国演绎', 'mudanting', '西游记', '红楼梦', '聊斋志异', 'jinpingmei'}
>>>
>>>
- 差集 : 用符号左边和 右边的比较 ,显示左边比右边多的数据
>>> s1 - s2 等效于 s1.difference(s2)
{'西游记', '水浒传', '三国演绎'}
>>>
>>> s2 - s1
{'聊斋志异', 'mudanting', 'jinpingmei'}
二、集合方法
1.集合的内建方法
集合名称+ . 选项(‘值’)
●set.add() : 添加成员
●set.update() :批量添加成员
●set.remove() :移除成员
● set.add()
>>> s2
{0, 'a', 3, 'w'}
>>>
>>> s2.add('bb')
>>>
>>> s2
{0, 3, 'a', 'w', 'bb'}
>>>
>>> s2.remove(3)
>>>
>>> s2
{0, 'a', 'w', 'bb'}
>>>
● set.updateupdate(值)
>>> s2
{0, 'a', 'w', 'bb'}
>>> s2.update('ABCDE')
>>> s2
{0, 'D', 'a', 'E', 'A', 'w', 'C', 'B', 'bb'}
>>>
>>> s2.update(["bob",3.88, True])
>>> s2
{0, 'D', True, 3.88, 'a', 'E', 'A', 'w', 'C', 'B', 'bb', 'bob'}
>>>
● s.issubset(t) :
● s.issuperset(t) :
>>> s3
{'b', 'c', 'a', 'd'}
>>> s4
{'z', 'k', 'a', 'w'}
>>>
>>> s3.issubset(s4)
False
>>> s3.issuperset(s4)
False
>>>
● s.union(t) : 和 | 功能一样记一个即可
● s.intersection(t) : 和 & 功能一样记一个即可
● s.difference(t) : 和 - 功能一样记一个即可