容器数据类型的使用

容器数据类型的使用
【●】列表与元组
 一、列表
 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)  : 和 - 功能一样记一个即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值