集合

集合是无序的,不重复的数据集合,它里面的元素是可哈希的(不可变类型),但是集合本身是不可哈希(所以集合做不了字典的键)的。以下是集合最重要的两点:

  去重,把一个列表变成集合,就自动去重了。

  关系测试,测试两组数据之前的交集、差集、并集等关系。

#关于集合和波尔值之间的苟苟且且# 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,还有一些数据类型补充相关推荐

  1. Python基础7(集合与深浅copy)

    纯修改列表(删除)但不限于删除  方法 :由后向前处理列表 列表 1 # 删除索引为偶数的元素 2 # 方法一 3 # li = [22, 33, 44, 55, 66] 4 # for i in r ...

  2. set集合、深浅拷贝以及部分知识点补充

    基础数据类型补充 字符串的拼接 lis = ["李嘉诚", "麻花藤", "黄海峰", "刘嘉玲"]s = " ...

  3. day7——集合,深浅copy

    数据类型的补充 # s1 = '中国' # b1 = s1.encode('utf-8') # # print(b1)-------------->b'\xe4\xb8\xad\xe5\x9b\ ...

  4. python集合数据对象_python学习第七天 基础数据类型补充 深浅copy 集合 关键字后面加可迭代对象...

    在基础数据类型中可能遇到的坑: 元组: tuple1=(1) 的数据类型是int , tuple2=('alex')的数据类型是str 等 tuple1=(1,) 和 tuple2的数据类型是 tup ...

  5. [转载] python创建集合、计算a|b_python之路(集合,深浅copy,基础数据补充)

    参考链接: Python 集合set | symmetric_difference 一.集合:类似列表,元组的存储数据容器,不同点是不可修改,不可重复.无序排列. 1.创建集合: (1).set1 = ...

  6. Python基础三--字典,集合,编码,深浅copy,元祖、文件操作

    字典 dict数据类型划分:可变数据类型,不可变数据类型不可变数据类型: 元组,bool值,int,str 可哈希可变数据类型: list,dict,set 不可哈希 dict key :必须是不可变 ...

  7. Python之基础数据补充、set集合和深浅拷贝

    基础数据补充 字符串的常用操作         1. join() li = ["李嘉诚", "麻花藤", "⻩海峰", "刘嘉玲 ...

  8. 乐学python怎么样_铁乐学Python_day07_集合and浅谈深浅copy

    1.[List补充] 在循环一个列表时,最好不要使用元素和索引进行删除操作,一旦删除,索引会随之改变,容易出错. 如果想不出错,可以采用倒着删除的方法,因为倒着删除进行的话,只是后面元素的位置发生了变 ...

  9. WPF 绑定以基础数据类型为集合的无字段名的数据源

    WPF 绑定以基础数据类型为集合的无字段名的数据源 运行环境:Window7 64bit,.NetFramework4.61,C# 6.0: 编者:乌龙哈里 2017-02-21 我们在控件的数据绑定 ...

最新文章

  1. 一篇文章教会你利用Python网络爬虫获取Mikan动漫资源
  2. SqlServer英文单词全字匹配
  3. 语言 提取列名_学习健明老师发布的R语言练习题的学习笔记(二)
  4. 浏览器在DPI缩放时变化问题
  5. 制作.sens数据集跑通bundlefusion
  6. mysql多表查询语句_mysql查询语句 和 多表关联查询 以及 子查询
  7. zepto源码研究 - ajax.js($.ajaxJSONP 的分析)
  8. cascade down_Cascaded CNN 方法寻找人脸关键点
  9. 让我们将包变成模块系统!
  10. 云+X案例展 | 传播类:九州云 SD-WAN 携手上海电信,助力政企客户网络重构 换新颜
  11. mysql初体验学习笔记_【MySQL】mycli初体验
  12. 华为Mate 20 X 5G版打通5G电话:音质饱满画面清晰
  13. AngularJS 开发辅助工具
  14. Chap 06 HTML使用表格
  15. 长连接与短链接的区别
  16. 未支付订单----倒计时
  17. Android车机初体验
  18. 畅写Office加持公软件云协作特性,让企业办公效率飞起来
  19. Linux 编译找不到头文件
  20. AliMe Chat: A Sequence to Sequence and Rerank based Chatbot Engine论文笔记

热门文章

  1. jupyter notebook 插入图片
  2. tensorflow2.0中dataset API 总结
  3. 【文本分类】基于类信息的TF-IDF权重分析与改进
  4. 使用Valgrind的callgrind做c/c++代码的code profiling/性能调优
  5. 腾讯云主机安全防护(云镜卸载)--/usr/local/qcloud/YunJing/YDEyes/YDService
  6. C++_STL——array(C++11)
  7. 关于int main( int argc, char* argv[] ) 中arg和argv参数理解
  8. vscode jsx html补全,VScode设置jsx语法自动补全
  9. win10有自带测试软件吗,使用windows10自带工具测试系统内存
  10. 青羊区光华中心机器人_北京大学招收机器人工程本科生