基础数据类型之集合和深浅copy,还有一些数据类型补充
集合
集合是无序的,不重复的数据集合,它里面的元素是可哈希的(不可变类型),但是集合本身是不可哈希(所以集合做不了字典的键)的。以下是集合最重要的两点:
去重,把一个列表变成集合,就自动去重了。
关系测试,测试两组数据之前的交集、差集、并集等关系。
#关于集合和波尔值之间的苟苟且且# set ={1,2,3,4,5,True,(1,2,3),} #集合具有自动去重和去空格功能# set.add(False)# set.add(True) #打印结果显示,没有Teue,应该是集合内部的数字和元组不是空是True,去重就把True去掉了# print(set) # set.update(False) #update是随机迭代增加,布尔值不是迭代对象,所以只能用add增加# print(set)# set.update(True)# print(set) #删除# set = {1,2,3,4,5,(789),6}# set.pop() #随机删除,有返回值# print(set) #交集# set = {1,2,3,4}# set1 = {3,4,5,6,7}# print(set.intersection(set1))# print(set&set1) #并集 并集也可以去两个集合的重# set = {1,2,3,4}# set2 = {3,4,5,6,7,8}# print(set.union(set2))# print(set|set2) #差集# set = {1,2,3,4,5}# set3 = {4,5,6,7}# print(set.difference(set3))# print(set - set3) #反交集 #两个集合相同的去掉# set = {1,2,3,4,5}# set4 = {4,5,6,7,8}# print(set.symmetric_difference(set4))# print(set ^ set4) #超集 子集# set = {1,2,3,4}# set5 = {1,2,3,4,5,6,7}# print(set5.issuperset(set)) #判断set5是不是set的爸爸,返回波尔值# print(set.issubset(set5)) #判断set是不是set5的儿子,返回波尔值# print(set5 > set)# print(set < set5) #把集合冻住,使其成为不可变数据类型# set = {1,2,3,4,5,6}# print(frozenset(set))
深浅copy
浅copy 通过赋值之后,两个值内存地址不同,在数据有嵌套的情况下,嵌套部分内存地址相同,无论嵌套多少层都一样
深copy必须调用copy模块才能使用 import copy deepcopy 深copy就是通过赋值之后,值得内存地址完全不同,无论嵌套多少层都一样
基础数据类型补充
现在我莫名其妙有一个需求dic = {'k1':'v1','k2':'v2','a3':'v3'},我现在看着字典不顺眼,准备收拾它,就想着把它的带元素k的键删掉怎么办
按照正常思路来一下,这个字典有多大咱们不知道,也许里面储存了上亿的带k大军,所以我用循环删
dic = {'k1':'v1','k2':'v2','a3':'v3'}
for i in dic:
if 'k' in i:
del dic[i]
print(dic)
结果报错,说是字典长度改变了。。。我觉得废话,我要删除长度肯定改变啊,总之不让删咋整。。。
然后,我踩在前人的肩膀上抄了这样一份代码解决了问题
# dic = {'k1':'v1','k2':'v2','a3':'v3'}# l = []# for i in dic:# if 'k' in i:# l.append(i)# for i in l: #关键在这里和下面,执行的是循环列表,但是删除的是字典,无耻啊# del dic[i] #现在字典可以删除,因为现在不是边循环字典边删除,而是先判断出字典的带k大军放到列表里,循环列表就相当于循环字典带k大军,此时字典的带k大军就被删除了# print(dic)然后我又抄了第二份。。。
# dic = {'k1':'v1','k2':'v2','a3':'v3'}# dic1 = {}# for i in dic.keys():# if 'k' not in i:# dic1.setdefault(i,dic[i])# dic = dic1# print(dic) 经过我一些神神叨叨的实验,得出以下结论
列表当循环列表时,如果在循环中删除某个或者某些元素,列表元素个数改变,索引改变,容易出错。列表这个在循环删除的时候可以从后往前删除,这样前面的索引不会变化,至于后面的那就无所谓了,后面改变也不影响循环 字典当循环字典时,如果在循环中删除某个或者某些键值对,字典的键值对个数改变,长度改变,容易出错。
转载于:https://www.cnblogs.com/ddjl/p/8086915.html
基础数据类型之集合和深浅copy,还有一些数据类型补充相关推荐
- Python基础7(集合与深浅copy)
纯修改列表(删除)但不限于删除 方法 :由后向前处理列表 列表 1 # 删除索引为偶数的元素 2 # 方法一 3 # li = [22, 33, 44, 55, 66] 4 # for i in r ...
- set集合、深浅拷贝以及部分知识点补充
基础数据类型补充 字符串的拼接 lis = ["李嘉诚", "麻花藤", "黄海峰", "刘嘉玲"]s = " ...
- day7——集合,深浅copy
数据类型的补充 # s1 = '中国' # b1 = s1.encode('utf-8') # # print(b1)-------------->b'\xe4\xb8\xad\xe5\x9b\ ...
- python集合数据对象_python学习第七天 基础数据类型补充 深浅copy 集合 关键字后面加可迭代对象...
在基础数据类型中可能遇到的坑: 元组: tuple1=(1) 的数据类型是int , tuple2=('alex')的数据类型是str 等 tuple1=(1,) 和 tuple2的数据类型是 tup ...
- [转载] python创建集合、计算a|b_python之路(集合,深浅copy,基础数据补充)
参考链接: Python 集合set | symmetric_difference 一.集合:类似列表,元组的存储数据容器,不同点是不可修改,不可重复.无序排列. 1.创建集合: (1).set1 = ...
- Python基础三--字典,集合,编码,深浅copy,元祖、文件操作
字典 dict数据类型划分:可变数据类型,不可变数据类型不可变数据类型: 元组,bool值,int,str 可哈希可变数据类型: list,dict,set 不可哈希 dict key :必须是不可变 ...
- Python之基础数据补充、set集合和深浅拷贝
基础数据补充 字符串的常用操作 1. join() li = ["李嘉诚", "麻花藤", "⻩海峰", "刘嘉玲 ...
- 乐学python怎么样_铁乐学Python_day07_集合and浅谈深浅copy
1.[List补充] 在循环一个列表时,最好不要使用元素和索引进行删除操作,一旦删除,索引会随之改变,容易出错. 如果想不出错,可以采用倒着删除的方法,因为倒着删除进行的话,只是后面元素的位置发生了变 ...
- WPF 绑定以基础数据类型为集合的无字段名的数据源
WPF 绑定以基础数据类型为集合的无字段名的数据源 运行环境:Window7 64bit,.NetFramework4.61,C# 6.0: 编者:乌龙哈里 2017-02-21 我们在控件的数据绑定 ...
最新文章
- 一篇文章教会你利用Python网络爬虫获取Mikan动漫资源
- SqlServer英文单词全字匹配
- 语言 提取列名_学习健明老师发布的R语言练习题的学习笔记(二)
- 浏览器在DPI缩放时变化问题
- 制作.sens数据集跑通bundlefusion
- mysql多表查询语句_mysql查询语句 和 多表关联查询 以及 子查询
- zepto源码研究 - ajax.js($.ajaxJSONP 的分析)
- cascade down_Cascaded CNN 方法寻找人脸关键点
- 让我们将包变成模块系统!
- 云+X案例展 | 传播类:九州云 SD-WAN 携手上海电信,助力政企客户网络重构 换新颜
- mysql初体验学习笔记_【MySQL】mycli初体验
- 华为Mate 20 X 5G版打通5G电话:音质饱满画面清晰
- AngularJS 开发辅助工具
- Chap 06 HTML使用表格
- 长连接与短链接的区别
- 未支付订单----倒计时
- Android车机初体验
- 畅写Office加持公软件云协作特性,让企业办公效率飞起来
- Linux 编译找不到头文件
- AliMe Chat: A Sequence to Sequence and Rerank based Chatbot Engine论文笔记
热门文章
- jupyter notebook 插入图片
- tensorflow2.0中dataset API 总结
- 【文本分类】基于类信息的TF-IDF权重分析与改进
- 使用Valgrind的callgrind做c/c++代码的code profiling/性能调优
- 腾讯云主机安全防护(云镜卸载)--/usr/local/qcloud/YunJing/YDEyes/YDService
- C++_STL——array(C++11)
- 关于int main( int argc, char* argv[] ) 中arg和argv参数理解
- vscode jsx html补全,VScode设置jsx语法自动补全
- win10有自带测试软件吗,使用windows10自带工具测试系统内存
- 青羊区光华中心机器人_北京大学招收机器人工程本科生