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)
Python练习_集合和深浅拷贝_day7的更多相关文章
- python之set集合、深浅拷贝
一.基本数据类型补充 1,关于int和str在之前的学习中已经介绍了80%以上了,现在再补充一个字符串的基本操作: li = ['李嘉诚','何炅','海峰','刘嘉玲'] s = "_&q ...
- python之set集合及深浅拷贝
一.知识点补充 1.1字符串的基本操作 li =["李李嘉诚", "麻花藤", "⻩黄海海峰", "刘嘉玲"] s = ...
- python中set(集合),深浅拷贝以及一些补充知识点
1.set集合 特点:无序,不重复,元素必须可哈希(不可变) 作用:去重复 本身是可变的数据类型.有增删改查操作.{集合的增删改查操作应用较少,这里不做详细介绍了(这里的增有一个方法update注意这 ...
- Python基础数据类型补充及深浅拷贝
本节主要内容:1. 基础数据类型补充2. set集合3. 深浅拷贝主要内容:一. 基础数据类型补充首先关于int和str在之前的学习中已经讲了80%以上了. 所以剩下的自己看一看就可以了.我们补充给一 ...
- python 学习笔记5(深浅拷贝与集合)
拷贝 我们已经详细了解了变量赋值的过程.对于复杂的数据结构来说,赋值就等于完全共享了资源,一个值的改变会完全被另一个值共享. 然而有的时候,我们偏偏需要将一份数据的原始内容保留一份,再去处理数据,这个 ...
- python随笔 join 字典,列表的清空 set集合 以及深浅拷贝(重点..难点)
一,字符串和列表的转换 1.str中的 join 方法: 把列表转换成字符串 # 将列表转换成字符串. 每个元素之间用_连接 s = '**'.join(['李启政',' 郑强' , '孙福来']) ...
- python中的set集合和深浅拷贝
一.基础数据类型的补充 1.str中的join算法,将列表转换成字符串,并用'_'(或其他) li=['李嘉诚','马化腾','刘嘉玲','黄海峰',] s='_'.join(li) print(s) ...
- 2018.8.3 python中的set集合及深浅拷贝
一.字符串和列表的相互转化 之前写到想把xx类型的数据转化成yy类型的数据,直接yy(xx)就可以了,但是字符串和列表的转化比较特殊,相互之间的转化要通过join()和split()来实现. 例如: ...
- 从入门到自闭之Python集合,深浅拷贝(大坑)
小数据池 int: -5~256 str: 字母,数字长度任意符合驻留机制 字符串进行乘法时总长度不能超过20 特殊符号进行乘法时只能乘以0 代码块: 一个py文件,一个函数,一个模块,终端中的每一行 ...
随机推荐
- ES--Kibana相关操作创建索引和Mapping
创建索引 kibana 使用如下命令进行创建索引内容. PUT test_index/ 创建别名 POST _aliases { "actions": [{ "add&q ...
- decimal赋值
decimal dRebate1 = new decimal(1);decimal dRebate2 = Convert.ToDecimal(1);decimal dRebate3 = 1M; htt ...
- 002-创建型-01-工厂方法模式(Factory Method)
一.概述 定义一个创建对象的接口,但让实现这个接口的类来决定实例化那个类,工厂方法让类的实例化推迟到子类中进行. 工厂方法模式(FACTORY METHOD)同样属于一种常用的对象创建型设计模式,又称 ...
- (九)Centos之搜索命令whereis、which和字符串搜索命令grep
一.Centos之命令搜索命令whereis与which 1.1 whereis 命令名(搜索命令所在路径及帮助文档所在位置) 选项: -b :只查找可执行文件位置 -m:只查找帮助文件 1.2 wh ...
- Core Data 的线程安全问题
前言: 很多小的App只需要一个ManagedContext在主线程就可以了,但是有时候对于CoreData的操作要耗时很久的,比如App开启的时候要载入大量数据,如果都放在主线程,毫无疑问会阻塞UI ...
- EXCEL中,在其中列 前面or后面加一个“元”字的技巧
EXCEL小技巧,我们平常需要用到一些,记录下,供有需要的人参考! 案例: EXCEL其中的一列,每个后面加一个“元”字,如果要1个1个去加,相当麻烦,其实很简单,只需要一个公式即可! 解决方法: ( ...
- 个人总结2019 ASP.NET面试题
1.什么是面向对象? 面向对象就是把一个人或事务的属性,比如名字,年龄这些定义在一个实体类里面.存和取的时候直接使用存取实体类就把这个人的名字,年龄这些全部存了,这个实体类就叫对象,这种思想就叫面向对 ...
- springboot与shiro在html中使用shiro标签
上一章讲环境搭建 springboot与shiro和mybatis和mysql 现在讲html中怎么使用shiro标签,这里是基于上一章讲的 在pom文件引入依赖 <dependency> ...
- java根据模板生成pdf
原文链接:https://www.cnblogs.com/wangpeng00700/p/8418594.html 在网上看了一些Java生成pdf文件的,写的有点乱,有的不支持写入中文字体,有的不支 ...
- C#学习笔记06--类/对象/访问修饰符/方法
编程思想 1.面向过程 面向过程是要把问题解决的过程分成有一定顺序的不同步骤, 然后按照步骤一步步的将问题解决. 2.面向对象 面向对象解决问题的思路是先分析问题中所涉及的对象, 然后 ...