Python_Day_04 set方法总结

set(集合)

  • 直接创建一个空集合
set_empty = set()
print(set_empty) # set()
  • 根据参数创建
# 根据参数
set_argument = set(42,‘345‘,‘ry‘)
print(set_argument) # 这样会报错,因为set只允许有一个参数
  • 根据列表来创建
set_list = set([11,11,‘45‘,‘11‘,‘ee‘])
print(set_list) # {11, ‘ee‘, ‘45‘, ‘11‘} 会自动删除重复对象
  • 根据元组来创建
set_tuple = set((11,11,‘45‘,‘11‘,‘ee‘,))
print(set_tuple) # {‘ee‘, 11, ‘45‘, ‘11‘} 同样会自动删除重复对象
  • 根据字典来创建
set_dict = set({‘k1‘:‘v1‘,‘k2‘:2,‘k3‘:‘v3‘,‘k1‘:‘v4‘})
print(set_dict) # {‘k3‘, ‘k1‘, ‘k2‘} 只会存储key值,且不会重复
  • 字符串创建
set_str = set(‘Hello Python‘)
print(set_str) # {‘y‘, ‘o‘, ‘n‘, ‘ ‘, ‘P‘, ‘t‘, ‘h‘, ‘H‘, ‘e‘, ‘l‘} 同样会删除字符串中重复的字符
  • add(self, *args, **kwargs) 添加一个新的元素到集合中,如果添加的元素在集合中已经存在就不会有任何操作
set_init = set([11,11,‘45‘,‘11‘,‘ee‘])
set_init.add(‘Hello‘)
print(set_init) # {‘Hello‘, 11, ‘ee‘, ‘11‘, ‘45‘}

set_init_str = set(‘Python‘)
set_init_str.add(‘Hello,World‘)
print(set_init_str) # {‘Hello,World‘, ‘o‘, ‘P‘, ‘t‘, ‘n‘, ‘y‘, ‘h‘}
  • clear(self, *args, **kwargs) 清除集合中元素,可以传参数
set_init_clear = set([11,11,‘45‘,‘11‘,‘ee‘])
set_init_clear.clear()
print(set_init_clear) # set()
  • copy(self, *args, **kwargs)  浅拷贝,会返回一个新的集合
set_init_copy = set([11,11,‘45‘,‘11‘,‘ee‘])
set_receive_copy = set_init_copy.copy()
print(set_receive_copy) # {‘ee‘, 11, ‘45‘, ‘11‘}
  • difference(self, *args, **kwargs)  比较两个集合类的不同,返回的是被主动比较的那个集合与比较集合的交集之外的子集(数学上叫啥给忘了)
set_init_dif1 = set([11,22,33,44])
set_init_dif2 = set([33,44,55,66])
set_init_rece1 = set_init_dif1.difference(set_init_dif2)
print(set_init_rece1) # {11, 22}
set_init_rece2 = set_init_dif2.difference(set_init_dif1)
print(set_init_rece2) # {66, 55}
  • difference_update(self, *args, **kwargs)  删除两个集合的交际
set_init_upd1 = set([11,22,33,44])
set_init_upd2 = set([33,44,55,66])
set_init_upd1.difference_update(set_init_upd2)
print(set_init_upd1) # {22, 11}

set_init_upd3 = set([11,22,33,44])
set_init_upd4 = set([33,44,55,66])
set_init_upd4.difference_update(set_init_upd3)
print(set_init_upd4) # {66, 55}
  • discard(self, *args, **kwargs)  删除集合中存在的元素,如果不存在就什么也不做
set_init_dis = set([11,22,33,44,55])
set_init_dis.discard(11)
print(set_init_dis) # {33, 44, 22, 55} 只能删除一个
  • intersection(self, *args, **kwargs)  返回两个集合中的交集
set_init_inter1 = set([11,22,33,44])
set_init_inter2 = set([33,44,55,66])
set_rece_inter1 = set_init_inter1.intersection(set_init_inter2)
print(set_rece_inter1) # {33, 44}
  • intersection_update(self, *args, **kwargs)  取出两个集合的交集,更新一个集合
set_inter_upd1 = set([111,222,333,444])
set_inter_upd2 = set([333,444,55,66])
set_inter_upd1.intersection_update(set_inter_upd2)
print(set_inter_upd1) # {444, 333}
  • isdisjoint(self, *args, **kwargs)  判断两个集合是否有交集,如果有就返回False,如果没有就返回Ture
set_isdis1 = set([111,222,333,444])
set_isdis2 = set([222,333])
set_receive_isdis1 = set_isdis1.isdisjoint(set_isdis2)
print(set_receive_isdis1) # False 说明有交集
  • issubset(self, *args, **kwargs)  判断A集合是否是B集合的子集
set_issub1 = set([111,222,333,444])
set_issub2 = set([222,333])
set_receive_issub1 = set_issub1.issubset(set_issub2)
print(set_receive_issub1) # False 说明set_issub1不是set_issub2的子集
set_receive_issub2 = set_issub2.issubset(set_issub1)
print(set_receive_issub2) # True 说明set_issub2是set_issub1的子集
  • issuperset(self, *args, **kwargs)  判断A集合是否是B集合的父类,就是A集合是否包含B集合.结果跟  issubset(self, *args, **kwargs) 相反
  • pop(self, *args, **kwargs)  移除元素,同时可以定义一个变量来接收移除的元素,如果集合为空会报错
set_pop = set([111,222,333,444,232])
set_receive_pop = set_pop.pop()
print(set_pop) # {444, 333, 222, 111}
print(set_receive_pop) # 232
  • remove(self, *args, **kwargs)  删除元素
set_remove = set([111,222,333,444,232])
set_remove.remove(111)
print(set_remove) # {232, 444, 333, 222}
  • symmetric_difference(self, *args, **kwargs)  取出两个差,更新到一个集合中,如果同时删除A,B两集合中相同元素删除.
set_sym1 = set([1,2,3,4,5])
set_sym2 = set([2,3,4,5,6,])
set_receive_sym1 = set_sym1.symmetric_difference(set_sym2)
print(set_receive_sym1) # {1, 6}

set_sym3 = set([1,2,3,4,5])
set_sym4 = set([6,])
set_receive_sym2 = set_sym3.symmetric_difference(set_sym4)
print(set_receive_sym2) # {1, 2, 3, 4, 5, 6}
  • symmetric_difference_update(self, *args, **kwargs)  将B集合中有,而A集合中没有的更新到A集合中
set_sym_up1 = set([1,2,3,4,5])
set_sym_up2 = set([2,3,4,5,6,])
set_sym_up1.symmetric_difference_update(set_sym_up2)
print(set_sym_up1) # {1, 6}

set_sym_up3 = set([1,2,3,4,5])
set_sym_up4 = set([6,])
set_sym_up3.symmetric_difference_update(set_sym_up4)
print(set_sym_up3) # {1, 2, 3, 4, 5, 6}
  • union(self, *args, **kwargs)  返回A集合和B集合的并集
set_un1= set([11,22,33,44])
set_un2 = set([22,33,44,55])
set_rec_un = set_un1.union(set_un2)
print(set_rec_un) # {33, 11, 44, 22, 55}
  • update(self, *args, **kwargs)  A和B的并集,并返回A
set_un_up1 = set([111,222,333,444])
set_un_up2 = set([222,333,444,555])
set_un_up1.update(set_un_up2)
print(set_un_up1) # {555, 333, 111, 444, 222}
时间: 2024-10-06 16:47:55

Python_Day_04 set方法总结的相关文章

Unity 崩溃问题解决方法——之一

友情提示:工作随记,不喜勿喷 注意:文艺青年可以略过,暴力青年欢迎采纳 Library文件夹 Unity每次编译都会生成这个东西,不用担心丢失的问题.所以,干掉他! 选中 + Delete   或者  选中 + Shift  + Delete 网上看了很多方法,就觉得这个简单,粗暴,是我喜欢的类型. 优点:上面说了 缺点:如果工程过大,重新编译时间会比较长.(但是对于查Log日志来说,相对快点)

Java TM 已被阻止,因为它已过时需要更新的解决方法

公司的堡垒机需要通过浏览器登陆,且该堡垒机的网站需要Java的支持,最近通过浏览器登陆之后总是提示"java TM 已被阻止,因为它已过时需要更新的解决方法"导致登陆之后不能操作, 但是操作系统中确实已经安装了比较新的JDK,安装的JDK版本是jdk-7u67-windows-i586,因为太烦人,所以决定搞清楚报错的原因,一劳永逸,彻底解决这个问题 准备工作:安装JDK,安装版本jdk-7u67-windows-i586.exe,因为机器的Eclipse还依赖64位的JDK,所以另安

win7 64位系统 PB连接oracle数据库出现“oracle library oci.dll could not be loaded”问题的解决方法

今天与大家分享一个自己的学习笔记,希望能给遇到同样问题的人带来帮助. 不知道大家在win7 64位系统下用 PB连接oracle数据库时,是否遇到过“oracle library oci.dll could not be loaded”问题. 今天,在win7 64位系统下用 PB连接oracle数据库时,一直出现上述错误,在百度上找了很久,都没有找到一个完整的解决方案,咨询了很多人,(他们都说是我的PB和oracle没装好,但我装的时候没出现任何问题,一切都很顺利,而且PB和oracle都能正

C#与数据库访问技术总结(八)之ExecuteNonQuery方法

ExecuteNonQuery方法 ExecuteNonQuery方法主要用来更新数据. 通常使用它来执行Update.Insert和Delete语句. 该方法返回值意义如下: 对于Update.Insert和Delete语句,返回值为该命令所影响的行数. 对于所有其他类型的语句,返回值为-1. Command对象通过ExecuteNonQuery方法更新数据库的过程非常简单,需要进行的步骤如下: (1)创建数据库连接. (2)创建Command对象,并指定一个SQL Insert.Update

android开发之onCreate( )方法详解

onCreate( )方法是android应用程序中最常见的方法之一,那么,我们在使用onCreate()方法的时候应该注意哪些问题呢? 先看看Google Android Developers官网上的解释: onCreate(Bundle) is where you initialize your activity. Most importantly, here you will usually call setContentView(int) with a layout resource d

MAC平台下Xcode配置使用OpenCV的具体方法 (2016最新)

1.序言: 1.1 背景 本人小白一枚,不过因为最近在从事机器视觉方面的工作,所以接触到OpenCV. 因为工作需求,本人要在MAC端使用OpenCV实现一些视觉功能,配置环境成了最大的阻碍,网上查了很多相关资料和博客,都因为版本环境问题屡试屡败,不过经历重重尝试,笔者最终还是配置成功并运行了自己的源码.当然成功的关键还是因为笔者站在了巨人的肩膀上,借鉴了很多网上的教程,为了不误导大家配置的过程,参考文章的地址统一放在文章里,望各位大大看见之后能够理解,废话不说进入正题. 1.2 环境说明 如果

正则化方法:L1和L2 regularization、数据集扩增、dropout

本文是<Neural networks and deep learning>概览 中第三章的一部分,讲机器学习/深度学习算法中常用的正则化方法.(本文会不断补充) 正则化方法:防止过拟合,提高泛化能力 在训练数据不够多时,或者overtraining时,常常会导致overfitting(过拟合).其直观的表现如下图所示,随着训练过程,网络在training data上的error渐渐减小,但是在验证集上的error却反而渐渐增大--因为训练出来的网络过拟合了训练集,对训练集外的数据却不work

mac上 go-delve 安装出现The specified item could not be found in the keychain 解决方法

安装go语言的编译环境,在安装到 delve时候出现如下错误: If reporting this issue please do so at (not Homebrew/brew or Homebrew/core): https://github.com/go-delve/homebrew-delve/issues These open issues may also help: Upgrade to delve fails https://github.com/go-delve/homebr

初识运维3--在虚拟机中安装Linux发行版系统(CentOS)的方法

在讲Linux系统发行版本的安装过程之前,先大略说明一下虚拟化. 虚拟化:将底层硬件资源抽象为用户更容易读懂和使用的逻辑抽象层的技术. 最早由IBM提出,现使用率较高的虚拟化软件平台有三类:VMware workstation.VirtualBOX.HyperV.在这里使用VMware workstation作为例子讲解说明安装过程. 虚拟化网络: 桥接模式:让物理机和虚拟机利用物理网络接口完成通信.虚拟机可以访问互联网. 仅主机模式:让虚拟机和物理机利用被虚拟出来的VMnet1网络接口完成通信