day 07

内容概要

  • 利用列表模拟出队列与堆栈的特征
  • 字典及其内置方法
  • 元组及其内置方法
  • 集合及其内置方法

详细内容

  • 利用列表模拟出队列与堆栈的特征

    '''
    队列 先进先出
    堆栈 先进后出
    '''
    # 队列
    l = []
    l.append(111)
    l.append(222)
    l.append(333)
    print(l.pop(0))
    print(l.pop(0))
    print(l.pop(0))
    
    # 堆栈
    l = []
    l.append(111)
    l.append(222)
    l.append(333)
    print(l.pop())
    print(l.pop())
    print(l.pop())
    
    
    
    
    
  • 字典及其内置方法

    '''
    定义:用{}括起来,内部存放多个元素,元素中间用逗号隔开,元素形式为:key:value
    key 必须是不可变类型:字符串、整型、浮点型
    value 可以是任意类型
    '''
    # dic = {
    #     'name': 'ycc',
    #     11: 222,
    #     11.11: 333
    # }
    # print(dic, type(dic))
    
    # 一、优先掌握操作
    # 1、按key取值,可存可取
    # 2、长度len
    # 3、成员运算
    # 4、删除
    # 5、键keys(),值values(),键值对items()
    # 6、for循环
    
    
    # 1、按key取值,可存可取
    # dic = {'name': 'ycc', 'age': 20, 'hobbies': ['play', 'tea']}
    # print(dic['name'])  # ycc
    # dic['name'] = 'xixi'
    # print(dic)  # {'name': 'xixi', 'age': 20, 'hobbies': ['play', 'tea']}
    # dic['k1'] = 666
    # print(dic)  # {'name': 'xixi', 'age': 20, 'hobbies': ['play', 'tea'], 'k1': 666}
    # # 总结:键值存在则修改对应的value值,键值不存在则直接添加
    # print(dic['k3'])  # 若打印不存在的键值则直接报错
    
    # 2、长度len
    # dic = {'name': 'ycc', 'age': 20, 'hobbies': ['play', 'tea']}
    # print(len(dic))  # 3
    
    # # 3、成员运算
    # # in    not in
    # print('name' in dic)  # True
    # print(20 in dic)  # False 字典默认只暴露key value不暴露 如果想取 一般只能通过key
    
    # 4、删除
    # dic = {'name': 'ycc', 'age': 20, 'hobbies': ['play', 'tea']}
    # # 4.1 del
    # del dic['name']
    # print(dic)  # {'age': 20, 'hobbies': ['play', 'tea']}    字典不能用索引
    # 4.2 pop
    # dic.pop('age')
    # print(dic)  # {'name': 'ycc', 'hobbies': ['play', 'tea']}
    
    # 5、键keys(),值values(),键值对items()
    # dic = {'name': 'ycc', 'age': 20, 'hobbies': ['play', 'tea']}
    # 5.1 keys()
    # print(dic.keys())  # dict_keys(['name', 'age', 'hobbies'])
    # '''
    # python3 与 python2中的对比
    #     python3:dict_keys(['name', 'age', 'hobbies'])
    #     python2:['name', 'age', 'hobbies']
    # '''
    # for k in dic.keys():  # 等价与 for k in dic:
    #     print(k)  # name age hobbies
    # 5.2 values()
    # print(dic.values())  # dict_values(['ycc', 20, ['play', 'tea']])
    # '''
    #  python3 与 python2中的对比
    #      python3:dict_values(['ycc', 20, ['play', 'tea']])
    #      python2:(['ycc', 20, ['play', 'tea']])
    # '''
    # for v in dic.values():
    #     print(v)  # ycc 20 ['play', 'tea']
    # # 5.3 items()
    # print(dic.items())  # dict_items([('name', 'ycc'), ('age', 20), ('hobbies', ['play', 'tea'])])
    # '''
    #  python3 与 python2中的对比
    #      python3:dict_items([('name', 'ycc'), ('age', 20), ('hobbies', ['play', 'tea'])])
    #      python2:[('name', 'ycc'), ('age', 20), ('hobbies', ['play', 'tea'])]
    # '''
    # for i in dic.items():
    #     print(i)  # ('name', 'ycc') ('age', 20) ('hobbies', ['play', 'tea'])
    
    # 6、for循环
    # 字典for循环只能取到key
    # dic = {'name': 'ycc', 'age': 20, 'hobbies': ['play', 'tea']}
    # for i in dic:
    #     print(i)  # name age hobbies
    
    
    
    # 二、内置方法
    # 1.get()
    # 2.clear()
    # 3.fromkeys()
    # 4.popitem()
    # 5.setdefault() 重点*************************
    # 6.update()
    
    # # 1.get()
    # dic = {'name': 'ycc', 'age': 20, 'hobbies': ['play', 'tea']}
    # print(dic.get('name'))  # ycc  key存在
    # print(dic.get('k1'))  # None  key不存在
    # print(dic['name'])  # ycc      key存在
    # # print(dic['k1'])  # 报错       key不存在
    # # 总结 获取value的值的方法有以上2种,如果key存在则都能取到value,如果key不存在get()返回None,另一种直接报错
    # print(dic.get('k1', 'haha'))  # haha    若不存在key,也可通过这种形式直接返回value
    
    # 2.clear()
    # dic = {'name': 'ycc', 'age': 20, 'hobbies': ['play', 'tea']}
    # dic.clear()
    # print(dic)  # {}
    
    # 3.fromkeys()  快速生成字典
    # l = ['name', 'age', 'hobbies']
    # res = dict.fromkeys(l, None)
    # print(res)  # {'name': None, 'age': None, 'hobbies': None}
    
    # 4.popitem()
    # dic = {'name': 'ycc', 'age': 20, 'hobbies': ['play', 'tea']}
    # res = dic.popitem()
    # print(res)  # ('hobbies', ['play', 'tea']) 随机删除一组键值对,但是现在的版本的python都是删除最后一组键值对,不必纠结
    
    # 5.setdefault() 重点*************************
    # dic = {'name': 'ycc', 'age': 20, 'hobbies': ['play', 'tea']}
    # print(dic.setdefault('name', 'xixi'))  # ycc
    # print(dic.setdefault('k1', 111))  # 111
    # 总结:key存在不能修改value,key不存在直接新建一对键值对
    
    # 6.update()
    # dd = {'name':'jason','pwd':123}
    # dd.update({'age':18})  # 键不存在 则新建
    # dd.update({'name':'EGONDSB'})  # 键存在则修改
    # print(dd)
    # # 还不如使用下列方式
    # dd['age'] = 18
    # dd['name'] = 'jason'
    
    
    # # 创建字典的3种方式
    # # 1.
    # l1 = {'k1': 11, 'k2': 'ccc'}
    # print(dict(l1))
    # # 2.
    # print(dict(name='ycc', pwd=123))
    # # 3.
    l3 = [
        ['username', 'jason'],
        ['password', 123],
        ['hobby', ['read', 'run']]
    ]
    #  print(dict(l3))    #1
    
    # dic = {}            #2
    # for k in l3:
    #     dic[k[0]] = k[1]
    # print(dic)
    
    # dic = {}            #3
    # for k,v in l3:
    #     dic[k] = v
    # print(dic)
    # 总结以上第2、3种方法等价于第一种方法
    
    
    
    
    
    
    
    
  • 元组及其内置方法

    '''
    定义:小括号括起来,可存放多个元素,元素与元素之间逗号隔开,元素可以是任意类型
         元组可简单的看成列表
         注意:************元组是不可变类型,但是列表是可变类型
    '''
    
    # 类型转换 与list一致 支持for循环的都可以
    # t1 = (1)
    # print(type(t1))  # int
    # t2 = ('a')
    # print(type(t2))  # str
    # l1 = [1]
    # print(type(l1))  # list
    """
    元组当内部只有一个元素的时候 逗号不能省略
    
    
    以后只要是容器类型 无论内部有几个元素 都必须要有逗号
        尤其是只有一个元素的情况下
            (1,)
            [1,]
            {'username':'jason',}
    """
    
    # 作用:存多个值,对比列表来说,元组不可变(是可以当做字典的key的),主要是用来读
    
    # 定义:与列表类型比,只不过[]换成()
    
    # 优先掌握的操作:
    # 1、按索引取值(正向取+反向取):只能取
    # t1 = (11,22,33)
    # t1[0] = 666
    # print(t1)
    """
    笔试题
        元组内元素的内存地址不能修改
        但是如果元素是可变类型 那么元素值可以改
    """
    # t2 = (11,22,[11,22])
    # t2[2].append(33)
    # # 问:上述代码执行的结果是什么
    # print(t2)  # (11, 22, [11, 22, 33])
    # 2、切片(顾头不顾尾,步长)
    # 与字符串 列表一致
    # 3、长度
    # len()
    # 4、成员运算in和not in
    # 与列表一致
    
    # 5、循环
    # for i in (11,22,33):
    #     print(i)
    
    
  • 集合及其内置方法

    """
    大括号括起来 内部可以存放多个元素
    元素与元素之间逗号隔开(不是k:v键值对)  元素只能是不可变类型(整型 浮点型 字符串 元组)
        s = {1,2,3,4}
    
        只有两种情况才会考虑使用集合
            1.关系运算
                两个群体之间判断 交叉并集
                    共同好友 共同关注 共同点赞...
            2.去重操作
                去除重复的元素
    """
    # se = {1,2,3,4,5}  # set(1,2,3,4,5)
    # print(type(se))  # set
    # d1 = {}
    # s1 = {}
    # print(type(d1),type(s1))  # <class 'dict'> <class 'dict'>
    # """定义空集合 需要使用关键字set"""
    # ss = set()
    # print(ss,type(ss))  # set
    # s = {11,1.1,'hello',(1,2,3)}
    # 2.去重操作
    l = [11,22,33,22,11,44,33,22,55,66,66,66]
    # for循环一个个元素 判断当前元素是否已存在
    # new_l = []
    # for i in l:
    #     if i not in new_l:
    #         new_l.append(i)
    # print(new_l)  # [11, 22, 33, 44, 55, 66]
    # 将列表转换成集合
    # res = set(l)
    # print(res)
    # '''集合内默认不能出现重复的元素 如果出现了会自动去重'''
    # r1 = {11,22,22,22,11,44,44,44}
    # print(r1)
    
    
    
    
    # 关系运算
    f1 = {'jason','egon','kevin','tony'}
    f2 = {'jason','jack','oscar','kevin'}
    # 共同好友
    print(f1 & f2)  # {'jason', 'kevin'}
    # f1独有的好友
    print(f1 - f2)  # {'tony', 'egon'}
    # f2独有的好友
    print(f2 - f1)  # {'oscar', 'jack'}
    # 所有的好友
    print(f1 | f2)  # {'jason', 'oscar', 'egon', 'tony', 'kevin', 'jack'}
    # 求各自好友 不包含共有的
    print(f1 ^ f2)  # {'jack', 'oscar', 'tony', 'egon'}
    
    # 父集 子集
    """
    父级:A包含B 那么A就是B的父级
    子级:A包含B 那么B就是A的子级
    """
    s1 = {1,2,3,4,5}
    s2 = {1,2,3}
    print(s1 > s2)  # True
    print(s1 < s2)  # False
    

作业

一、字典练习题
    1.将列表中大于等于66的元素放入字典k1键对应的列表中
    	将列表中小于66的元素放入字典k2键对应的列表中
        nums=[11,22,33,44,55,66,77,88,99,90]
        dic={
            'k1':[],
            'k2':[]
        }
    2.s='hello jason jason say hello sb sb sb'
		统计字符串中每个单词出现的次数
        	{'jason':2,...}
二、集合练习题
	(1)关系运算
          有如下两个集合,pythons是报名python课程的学员名字集合,linuxs是报名linux课程的学员名字集合
          pythons={'alex','egon','yuanhao','wupeiqi','gangdan','biubiu'}
          linuxs={'wupeiqi','oldboy','gangdan'}
          1. 求出即报名python又报名linux课程的学员名字集合
          2. 求出所有报名的学生名字集合
          3. 求出只报名python课程的学员名字
          4. 求出没有同时这两门课程的学员名字集合
     (2) 去重并且保留原来的顺序
           l = [11,22,33,22,22,33,11,22,55,66,66,77,77]
           1.去重不保留顺序
           2.去重并且保留顺序
        
        
        
        # 一、字典练习题
#     1.将列表中大于等于66的元素放入字典k1键对应的列表中
#     	将列表中小于66的元素放入字典k2键对应的列表中
#         nums=[11,22,33,44,55,66,77,88,99,90]
#         dic={
#             'k1':[],
#             'k2':[]
#         }
# nums = [11, 22, 33, 44, 55, 66, 77, 88, 99, 90]
# dic = {
#     'k1': [],
#     'k2': []
# }
# for i in nums:
#     if i >= 66:
#         dic.get('k1').append(i)
#     else:
#         dic.get('k2').append(i)
# print(dic)


#     2.s='hello jason jason say hello sb sb sb'
# 		统计字符串中每个单词出现的次数
#         	{'jason':2,...}
# s = 'hello jason jason say hello sb sb sb'
# res = s.split(' ')  # 指定字符: ' ' 将字符串切割且指定字符不保留,切割后的形式为:列表
# # print(res)  # ['hello', 'jason', 'jason', 'say', 'hello', 'sb', 'sb', 'sb']
# dic = {}  # 定义一个空字典
# for i in res:  # 遍历列表res
#     if i in dic:  # 判断当前的key值是否存在
#         dic[i] += 1
#     else:
#         dic[i] = 1
# print(dic)

# 二、集合练习题
# 	(1)关系运算
# #           有如下两个集合,pythons是报名python课程的学员名字集合,linuxs是报名linux课程的学员名字集合
# pythons = {'alex', 'egon', 'yuanhao', 'wupeiqi', 'gangdan', 'biubiu'}
# linuxs = {'wupeiqi', 'oldboy', 'gangdan'}
# #           1. 求出即报名python又报名linux课程的学员名字集合
# print(pythons & linuxs)
#
# #           2. 求出所有报名的学生名字集合
# print(pythons | linuxs)
# #           3. 求出只报名python课程的学员名字
# print(pythons - linuxs)
# #           4. 求出没有同时这两门课程的学员名字集合
# print(pythons ^ linuxs)
#      (2) 去重并且保留原来的顺序
# l = [11, 22, 33, 22, 22, 33, 11, 22, 55, 66, 66, 77, 77]
# #            1.去重不保留顺序
# print(set(l))
# #            2.去重并且保留顺序
# new_l = []
# for i in l:
#     if i not in new_l:
#         new_l.append(i)
# print(new_l)


posted @ 2021-06-03 20:02  ccFTD  阅读(48)  评论(0)    收藏  举报