zoukankan      html  css  js  c++  java
  • Python练习_集合和深浅拷贝_day7

    1.

    1.作业

    1、把列表中所有姓周的人的信息删掉(升级题:此题有坑, 请慎重):
    lst = ['周老二', '周星星', '麻花藤', '周扒皮']
    结果: lst = ['麻花藤']
    
    
    2、车牌区域划分, 现给出以下车牌. 根据车牌的信息, 分析出各省的车牌持有量. (升级题)
    cars = ['鲁A32444','鲁B12333','京B8989M','黑C49678','黑C46555','沪 B25041'.....] locals = {'':'上海', '':'黑龙江', '':'山东', '':'湖北', '':'湖南', '': '北京'.....} 
    结果: {'山东': 2, '北京': 1, '黑龙江': 2, '上海': 1}
    
     
    3、干掉主播. 现有如下主播收益信息: zhubo = {'卢本伟':522000, '冯提莫':189999, '金老板': 99999, '吴老板': 250000, 'alex': 126} 1. 计算主播平均收益值 2. 干掉收益小于平均值的主播 3. 干掉卢本伟

    2.

    2.默写

    简述什么是深浅copy.

     有如下两个集合,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)

    二.去重

    1. 有列表l=['a','b',1,'a','a'],列表元素均为可hash类型,去重,得到新列表,且新列表无需保持列表原来的顺序

    l=['a','b',1,'a','a']
    li = set(l)
    print(li)

    2.在上题的基础上,保存列表原来的顺序

    l=['a','b',1,'a','a']
    li = []
    for i in l:
        if i not in li:
            li.append(i)
    print(li)

    3.去除文件中重复的行,肯定要保持文件内容的顺序不变

    方法一:

    import os
    with open('db.txt',mode='w',encoding='utf-8') as f:
        f.write('''我也不知道要写什么
        反正要有重复的行
        那就这行吧
        那就这行吧
        完毕
        ''')
    with open('db.txt',encoding='utf-8') as read_f,
        open('db1.txt',mode='w',encoding='utf-8') as write_f:
            li = []
            for line in read_f.readlines():
                if line not in li:
                    li.append(line)
                    write_f.write(line)
    os.remove('db.txt')
    os.replace('db1.txt','db.txt')

    方法二:

    with open('db.txt',mode='w',encoding='utf-8') as f:
        f.write('''我也不知道要写什么
        反正要有重复的行
        那就这行吧
        那就这行吧
        完毕
        ''')
    with open('db.txt',encoding='utf-8') as f1:
        li = []
        for line in f1.readlines():
            if line not in li:
                li.append(line)
    with open('db.txt',mode='w',encoding='utf-8') as f2:
        for j in li:
            f2.write(j)

    4.有如下列表,列表元素为不可hash类型,去重,得到新列表,且新列表一定要保持列表原来的顺序

    l=[
    {'name':'egon','age':18,'sex':'male'},
    {'name':'alex','age':73,'sex':'male'},
    {'name':'egon','age':20,'sex':'female'},
    {'name':'egon','age':18,'sex':'male'},
    {'name':'egon','age':18,'sex':'male'},
    ]

    l=[
        {'name':'egon','age':18,'sex':'male'},
        {'name':'alex','age':73,'sex':'male'},
        {'name':'egon','age':20,'sex':'female'},
        {'name':'egon','age':18,'sex':'male'},
        {'name':'egon','age':18,'sex':'male'},
    ]
    li = []
    for i in range(0,len(l)):
        if l[i] not in li:
            li.append(l[i])
    print(li)

    答案

    1、把列表中所有姓周的人的信息删掉(升级题:此题有坑, 请慎重)

    第一种方法:
    lst = ['周老二', '周星星', '麻花藤', '周扒皮'] # 结果: lst = ['麻花藤']
    li = []
    for i in range(len(lst)):
        if not lst[i].startswith(''):
            li.append(lst[i])
    lst = li
    print(lst)
    
    第二种方法:(浅copy)
    lst = ['周老二', '周星星', '麻花藤', '周扒皮']
    for i in lst[:]:
      if '' == i.strip()[0]:
        lst.remove(i)
    print(lst)


    2、车牌区域划分, 现给出以下车牌. 根据车牌的信息, 分析出各省的车牌持有量. (升级题)

    cars = ['鲁A32444','鲁B12333','京B8989M','黑C49678','黑C46555','沪 B25041'.....] locals = {'':'上海', '':'黑龙江', '':'山东', '':'湖北', '':'湖南', '': '北京'.....} 结果: {'山东': 2, '北京': 1, '黑龙江': 2, '上海': 1}
    
    cars = ['鲁A32444','鲁B12333','京B8989M','黑C49678','黑C46555','沪 B25041']
    locals = {'':'上海', '':'黑龙江', '':'山东', '':'湖北', '':'湖南'}
    dic = {}
    for i in range(len(cars)):
        dic[locals[cars[i][0]]] = 0
    for i in range(len(cars)):
        dic[locals[cars[i][0]]] += 1
    print(dic)

    3、干掉主播. 现有如下主播收益信息: zhubo = {'卢本伟':522000, '冯提莫':189999, '金老板': 99999, '吴老板': 250000, 'alex': 126} 1. 计算主播平均收益值 2. 干掉收益小于平均值的主播 3. 干掉卢本伟

    zhubo = {'卢本伟':522000, '冯提莫':189999, '金老板': 99999, '吴老板': 250000, 'alex': 126}
    sum = 0
    for i in zhubo:
        sum += zhubo[i]
    ave_sum = sum / len(zhubo)
    print(ave_sum)
    
    dic = {}
    for j in zhubo:
        if zhubo[j] >= ave_sum:
            dic[j] = zhubo[j]
    zhubo = dic
    print(zhubo)
    
    zhubo.pop('卢本伟')
    print(zhubo)
  • 相关阅读:
    mybatis 缓存
    mybatis 动态sql
    新手必读:游戏编程入门指南
    22条常用JavaScript开发小技巧
    Unity即将全面升级 实时3D技术及大场景编辑未来可期!
    10分钟学会Python基础知识
    如何用UE4制作非写实草浪
    最适合设计师的前端学习路径有哪些?
    超全面的C++游戏开发面试问题总结
    如何学习大型项目的源码?虚幻引擎源码学习思路分享
  • 原文地址:https://www.cnblogs.com/dongye95/p/10166282.html
Copyright © 2011-2022 走看看