基本数据类型之容器类型

一. 列表

  1. 作用:存多个值,并且是索引对应值

  2. 定义:l = [] # 用逗号分开,可以放任意多个值

  3. 类型转换:但凡能够被for循环遍历的类型都可以当做参数传给list()转成列表list()底层相当于for循环,字符串,列表,字典

  4. 内置方法:

优先掌握的方法:

  1. 按照索引取值(正向取+反向取):即可取,可改

    l = [111, 'egon', 'hello']
    # 正向取
    print(l[0])
    # 反向取
    print(l[-1])
    # 可以取也可以改
    l[0] = 222    # 修改行为,索引存在则修改对应的值
    print(l)  # 索引不存在则报错,无论取还是赋值
    
  2. 切片(顾头不顾尾,步长)

    l = [111, 'egon', 'hello', 'a', 'b', [1, 2, 3]]
    print(l[0:3])
    print(l[0:5:2])  # 指定步长为2
    
  3. len长度

    print(l[0:len(l)])
    print(l[:])
    new_l = l[:]  # 切片等同于拷贝行为,而且是浅拷贝
    
  4. 成员运算

    print('aaa' in ['aaa', 'bb', 111])
    # 返回True
    print('aaa', in ['aa', 'b', 'c'])
    # 返回False
    
  5. 往列表中添加值

    1. 追加

      l = [111, 'egon', 'hello']
      l.aapend(333)
      l.append(444)
      print(l)
      

      .append()

    2. 插入值

      l = [111, 'egon', 'hello']
      l.inster(0,'alex') # inster(索引,插入的值)
      

      .inster()

    3. extend()

    l.extend(l1) # 把l1里面的逐个添加到l中去,底层相当于调用了一个for循环
    
  6. 删除

方式一 :del 删 通用的删除方式只是单纯的删除,没有返回值

方式二:pop()根据索引删除,会返回删除的值,不指定默认删除最后一个

方式三:remove('egon')指定元素删除,会返回删除的值,不指定默认删除最后一个

方式四:clerar()清空列表

需要掌握的操作:

  1. count 统计元素个数 print(l.conut('egon')) 返回这个值存在列表中有几个值

  2. reverese():不是排序,就是将列表倒过来

  3. sort:排序,列表的元素必须是同种类型才可以排序, 默认升序

    sort(reversee = True) # 从大到小排序,设置为降序

    了解:字符串可以比大小,按照对应的位置以此pk,字符串的大小是按照ASCII码表的先后顺序以区别,表中排在后面的字符大于前面的

    了解:列表也可以比大小,原理同字符串一样,但是对应的位置的元素必须是同种类型

    队列:FIFO 先进先出

    l = []
    # 入队操作
    l.append('firset')
    l.append('second')
    l.append('third')
    print(l)
    #  出队操作
    print(l.pop())
    print(l.pop())
    print(l.pop())
    

二. 元组类型

  1. 作用:按照索引存放多个值,适用于读不用于改

  2. 定义:()内用逗号分隔多个任意类型的元素

    t = (1, 3, 'aa')  # t =tuple((1, 3, 'aa'))
    print(t.type(e))
    x = (10)  # 单独一个括号代表包含的意思
    t = (10,)  # 如果元组钟只有一个元素必须为逗号
    t = (1, 1.3, [1, 2, 3])
    

    元组内地址不可变,如果存放列表放元组,列表的内存地址不表,但是列表的值能改的是列表里面值的内存地址,没有更改列表的内存地址

  3. 类型转换:tuple

  4. 内置地址

    1. 按照索引取值(正向取+反向取):只能取

      t = ('aaa', 'bbb', 'cc')
      print(t[0])
      print(t[-1])
      
    2. 切片(顾头不顾尾,步长)

      t = ('aa', 'bbb',  ('c', 'dd', 'eee'))
      print(t[0:3])
      print(t[::-1])
      
    3. 长度

      t = ('aa', 'bbb', 'ccc', 'dd', 'eee')
      print(len(t))
      
    4. 成员运算

      print('aa' in t)

    5. 循环

      for x in t:
      	print(x)
      
    6. 方法

      t = (1, 2, 3)
      t.index(111) # 查看起始的索引
      t.count()  # 统计类型里面有多少个值
      

三.字典

  1. 作用:存放多个值的,key对应value对应值,key为不可变类型

  2. 定义:{}内用逗号分割开多个key:value,其中value可以使用任意类型,但是key,必须是不可变类型

    d = {'k1':111, (1,2,3):222}
    print(d['k1'])
    print(d[(1,2,3)])
    print(type(d))
    

    定义字典的方式二:

    d = {}  # 默认定义的是空字典
    print(d,type(d)
    d = dict(x = 1, y= 2, z = 3)
    
  3. 类型转换

    info = [
    ['name':'egon']
    ('age':18)
    ['gender':'male']
    ]
    d = {}
    # 转换1
    for i in info:
    	d[i[0]] = i[1]
    print(d)
    # 转换2
    for k,v in info:
    	d[k] = v
    print(d)
    # 转换3
    res = dict(info)
    print(res)
    

    造字典的方式

    keys = ['name', 'age', 'gender']
    d = {}
    for k in keys:
    	d[k] = None
    print(d)
    
    d = {}.fromkeys(keys,None)  # 快速初始化字典
    print(d) 
    
  4. 内置方法

    1. 按key存取值:key存在,则修改

      d = {'k1':111}
      # 针对复制操作:key存在,则修改
      d['k1'] = 222
      print(d)
      d['k2'] = 333  #针对复制操作:key存在,则修改,key不存在则创建新值
      print(d)
      
    2. 长度len

      d = {'k1':111, 'k2':222, 'k1:333,'k1':4444}
      print(d)  # 强调:key必须是不可变类型,却不能重复,重复则修改了
      
    3. 成员运算in和not in:根据key

      d = {'k1':111, 'k2':222}
      print('k1' in d)  # in 是根据key来判断的
      print(111 in d)  # False
      
    4. 删除

      d = ['k1':111, 'k2':222]
      # 通用删除
      del d['k1']
      print(d)
      # pop删除
      d.pop('k1') # 按照key来删除
      res = print(d)  print(res) # 返回删除key对应的那个value值
      # popitem删除: 随机删除,返回元组(删除key,删除的value)
      
    5. 键keys(), 值values(),键值对items()

    6. for 循环

      for k in d.keys(): # 取出key
      	print(k)
      for k in d:    # 不加keys也是取出字典的key
      	print(k)
      for v in d.values():  # 取出字典的value值
      	print(v)
      for k,v in d.items(): #取出字典的key,value两个,所以接收也是两个
          print(k,v)
      

需要掌握的内置方法

  1. d.clear() 清空字典

  2. d.update() 更新字典 新字典更新老字典,一切按新字典为准,有就更新,没有就添加

  3. d.get()

    print(d['k2'] key 不存在则报错

    print(d.get('k2')) key不存在不报错,返回None

  4. d.setdefault() 如果key存在则不懂,key不存在,则添加

    d =

  5. d.setdefault ('k1',222) 返回key对应值

    print(d)

四.基本数据类型之集合

  1. 作用

    1. 关系运算

      frineds1 = ['zero', 'kevin', 'jason', 'egon']
      friends2 = ['jy', 'ricky', 'jason', 'egon']
      l = []
      for x in friends1:
      	if x in friends2:
      		l.append(x)
      print(l)
      
  2. 定义:在{}内用逗号分隔开多个元素,多个元素满足一下三个条件

    1. 集合内元素必须为不可变类型

    2. 集合内元素无序

    3. 集合内元素没有重复

      s = {1,[1,2]}  # 集合内元素必须为不可变类型,存在可变类型直接报错
      s = {1,'a', 'z', 'b', 4, 7} # 集合内元素无序
      s = {1,1,1,1,1,1,'a', 'b'}  # 集合内元素没有重复
      print(s)  
      
      # 了解
      s = {}  # 默认是空字典
      print(type(s))
      # 定义空集合
      # s = set()
      # print(s, type(s))
      
  3. 类型转换

    set = ({1, 2, 3})
    res = set('hellolllllll')
    print(res)  # 转换成集合之后无序且自动把重复去重
    
  4. 内置方法

    关系运算

    
    frineds1 = ['zero', 'kevin', 'jason', 'egon']
    friends2 = ['jy', 'ricky', 'jason', 'egon']
    # 1.取交集:两者共同好友
    res = friends1 & friends2  # 符号取交集
    print(res)
    print(friends1.intersection(friends2))  # 内置方法取
    # 2.取并集,合集:两者所有的好友
    print(friends1 | friends2) # 符号取合集
    print(friends1.union(friends2)) # 内置方法取合集
    # 3.取差集:取friends1独有的好友、
    print(friends1 - friends2) # 符号取
    print(friends1.difference(friends2)) # 内置方法取 
    # 4.对称差集:求两个用户独有的好友们(即去掉共有的好友)
    print(friends1 ^ friends2)
    print(friends1.symmetric_difference(friends2))
    # 5.父子集:包含的关系
    s1 = {1,2,3}
    s2 = {1,2,4}
    print(s1 > s2) # False
    
    s1 = {1,2,3}
    s2 = {1,2}
    print(s1 > s2) # 当s1大于或等于s2时,才能说s1是s2的爹
    print(s1.issuperset(s2))  # 等同于大于
    print(s2.issuperset(s1))  # 等同于小于
    

    去重

    # 1.只能针对不可变类型去重
    print(set([1,1,1,1,1,]))
    # 2.无法保证原来的顺序
    l = [1, 'a', 'z', 1, 1, 1, 2]
    s = set(l)
    print(list(set(l)))
    print(l)
    
    l = [
        {'name':'lili','age':18,'sex':'male'}
        {'name':'jack','age':73,'sex':'male'}
        {'name':'tom','age':20,'sex':'female'}
        {'name':'lili','age':18,'sex':'male'}
        {'name':'lili','age':18,'sex':'male'}
    ]
    new_l = []
    for dic in l:
        if dic not in new_l:
            new_l.append(dic)
    print(new_l)
    

    其他操作

    # 1.长度
    >>> s={'a','b','c'}
    >>> len(s)
    3
    
    # 2.成员运算
    >>> 'c' in s
    True
    
    # 3.循环
    >>> for item in s:
    ...     print(item)
    ... 
    c
    a
    b
    

    其他内置方法

    s = {1,2,3}
    # 需要掌握的内置方法1:discard
    s.discard(4) # 删除元素不存在do nothing
    print(s)
    
    s.remove(4) # 删除元素不存在则报错
    
    # 需要掌握的内置方法2:update
    s.update({1, 3, 5})  # 更新集合
    print(s)
    
    
    s.difference_update({3, 4, 5}) # s = s.difference({3, 4, 5}) 
    print(s)
    
    # 需要掌握的内置方法3:pop
    res = s.pop()  # 随机删除,集合没有索引没有key,pop里面放不了
    print(res)
    
    # 需要掌握的内置方法4:add
    s.add(4) # 往集合里面添加单个元素
    print(s)
    
    s.isdisjoint() # 两个集合完全独立,没有共同部分,往回True
    
posted @ 2023-07-24 01:09  捡破烂的小L  阅读(29)  评论(0)    收藏  举报