python set

  1. python的set和其他语言类似, 是一个无序不重复元素集, 基本功能包括关系测试和消除重复元素. 集合对象还支持union(联合), intersection(交), difference(差)和sysmmetric difference(对称差集)等数学运算.  
  2.   
  3. sets 支持 x in set, len(set),和 for x in set。作为一个无序的集合,sets不记录元素位置或者插入点。因此,sets不支持 indexing, slicing, 或其它类序列(sequence-like)的操作。  
  4.   
  5.    
  6.   
  7. 下面来点简单的小例子说明把。  
  8.   
  9. >>> x = set('spam')  
  10. >>> y = set(['h','a','m'])  
  11. >>> x, y  
  12. (set(['a', 'p', 's', 'm']), set(['a', 'h', 'm']))  
  13.   
  14. 再来些小应用。  
  15.   
  16. >>> x & y # 交集  
  17. set(['a', 'm'])  
  18.   
  19. >>> x | y # 并集  
  20. set(['a', 'p', 's', 'h', 'm'])  
  21.   
  22. >>> x - y # 差集  
  23. set(['p', 's'])  
  24.   
  25. 记得以前个网友提问怎么去除海量列表里重复元素,用hash来解决也行,只不过感觉在性能上不是很高,用set解决还是很不错的,示例如下:  
  26.   
  27. >>> a = [11,22,33,44,11,22]  
  28. >>> b = set(a)  
  29. >>> b  
  30. set([33, 11, 44, 22])  
  31. >>> c = [i for i in b]  
  32. >>> c  
  33. [33, 11, 44, 22]  
  34.   
  35. 很酷把,几行就可以搞定。  
  36.   
  37. 1.8 集合   
  38.    
  39. 集合用于包含一组无序的对象。要创建集合,可使用set()函数并像下面这样提供一系列的项:  
  40.   
  41.    
  42.   
  43. s = set([3,5,9,10])      #创建一个数值集合  
  44.   
  45. t = set("Hello")         #创建一个唯一字符的集合  
  46.   
  47.    
  48.   
  49. 与列表和元组不同,集合是无序的,也无法通过数字进行索引。此外,集合中的元素不能重复。例如,如果检查前面代码中t集合的值,结果会是:  
  50.   
  51.    
  52.   
  53. >>> t  
  54.   
  55. set(['H', 'e', 'l', 'o'])  
  56.   
  57.    
  58.   
  59. 注意只出现了一个'l'。  
  60.   
  61. 集合支持一系列标准操作,包括并集、交集、差集和对称差集,例如:  
  62.   
  63.    
  64.   
  65. a = t | s          # t 和 s的并集  
  66.   
  67. b = t & s          # t 和 s的交集  
  68.   
  69. c = t – s          # 求差集(项在t中,但不在s中)  
  70.   
  71. d = t ^ s          # 对称差集(项在t或s中,但不会同时出现在二者中)  
  72.   
  73.    
  74.   
  75. 基本操作:  
  76.   
  77. t.add('x')            # 添加一项  
  78.   
  79. s.update([10,37,42])  # 在s中添加多项  
  80.   
  81.    
  82.   
  83. 使用remove()可以删除一项:  
  84.   
  85. t.remove('H')  
  86.   
  87.    
  88.   
  89. len(s)  
  90. set 的长度  
  91.   
  92. in s  
  93. 测试 x 是否是 s 的成员  
  94.   
  95. not in s  
  96. 测试 x 是否不是 s 的成员  
  97.   
  98. s.issubset(t)  
  99. s <= t  
  100. 测试是否 s 中的每一个元素都在 t 中  
  101.   
  102. s.issuperset(t)  
  103. s >= t  
  104. 测试是否 t 中的每一个元素都在 s 中  
  105.   
  106. s.union(t)  
  107. s | t  
  108. 返回一个新的 set 包含 s 和 t 中的每一个元素  
  109.   
  110. s.intersection(t)  
  111. s & t  
  112. 返回一个新的 set 包含 s 和 t 中的公共元素  
  113.   
  114. s.difference(t)  
  115. s - t  
  116. 返回一个新的 set 包含 s 中有但是 t 中没有的元素  
  117.   
  118. s.symmetric_difference(t)  
  119. s ^ t  
  120. 返回一个新的 set 包含 s 和 t 中不重复的元素  
  121.   
  122. s.copy()  
  123. 返回 set “s”的一个浅复制  
  124.   
  125.   
  126. 请注意:union(), intersection(), difference() 和 symmetric_difference() 的非运算符(non-operator,就是形如 s.union()这样的)版本将会接受任何 iterable 作为参数。相反,它们的运算符版本(operator based counterparts)要求参数必须是 sets。这样可以避免潜在的错误,如:为了更可读而使用 set('abc') & 'cbs' 来替代 set('abc').intersection('cbs')。从 2.3.1 版本中做的更改:以前所有参数都必须是 sets。  
  127.   
  128. 另外,Set 和 ImmutableSet 两者都支持 set 与 set 之间的比较。两个 sets 在也只有在这种情况下是相等的:每一个 set 中的元素都是另一个中的元素(二者互为subset)。一个 set 比另一个 set 小,只有在第一个 set 是第二个 set 的 subset 时(是一个 subset,但是并不相等)。一个 set 比另一个 set 打,只有在第一个 set 是第二个 set 的 superset 时(是一个 superset,但是并不相等)。  
  129.   
  130. 子 set 和相等比较并不产生完整的排序功能。例如:任意两个 sets 都不相等也不互为子 set,因此以下的运算都会返回 False:a<b, a==b, 或者a>b。因此,sets 不提供 __cmp__ 方法。  
  131.   
  132. 因为 sets 只定义了部分排序功能(subset 关系),list.sort() 方法的输出对于 sets 的列表没有定义。  
  133.   
  134.   
  135. 运算符  
  136.    运算结果  
  137.   
  138. hash(s)  
  139.    返回 s 的 hash 值  
  140.   
  141.   
  142. 下面这个表列出了对于 Set 可用二对于 ImmutableSet 不可用的运算:  
  143.   
  144. 运算符(voperator)  
  145. 等价于  
  146. 运算结果  
  147.   
  148. s.update(t)  
  149. s |= t  
  150. 返回增加了 set “t”中元素后的 set “s”  
  151.   
  152. s.intersection_update(t)  
  153. s &= t  
  154. 返回只保留含有 set “t”中元素的 set “s”  
  155.   
  156. s.difference_update(t)  
  157. s -= t  
  158. 返回删除了 set “t”中含有的元素后的 set “s”  
  159.   
  160. s.symmetric_difference_update(t)  
  161. s ^= t  
  162. 返回含有 set “t”或者 set “s”中有而不是两者都有的元素的 set “s”  
  163.   
  164. s.add(x)  
  165.   
  166. 向 set “s”中增加元素 x  
  167.   
  168. s.remove(x)  
  169.   
  170. 从 set “s”中删除元素 x, 如果不存在则引发 KeyError  
  171.   
  172. s.discard(x)  
  173.   
  174. 如果在 set “s”中存在元素 x, 则删除  
  175.   
  176. s.pop()  
  177.   
  178. 删除并且返回 set “s”中的一个不确定的元素, 如果为空则引发 KeyError  
  179.   
  180. s.clear()  
  181.   
  182. 删除 set “s”中的所有元素  
  183.   
  184.   
  185. 请注意:非运算符版本的 update(), intersection_update(), difference_update()和symmetric_difference_update()将会接受任意 iterable 作为参数。从 2.3.1 版本做的更改:以前所有参数都必须是 sets。  
  186.   
  187. 还请注意:这个模块还包含一个 union_update() 方法,它是 update() 方法的一个别名。包含这个方法是为了向后兼容。程序员们应该多使用 update() 方法,因为这个方法也被内置的 set() 和 frozenset() 类型支持。

转载于:https://www.cnblogs.com/nkwy2012/p/6387179.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/255416.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【bug修复】解决ValueError: Tensor(“Variable:0“ dtype=float32_ref) must be from the same graph as Tensor(“R

bug:描述 在进行tensorflow进行搭建CNN网络时&#xff0c;在定义CNN的py文件中调用cnn模型&#xff0c;运行正常&#xff0c;但是在其他py文件中进行时就出现问题 ValueError: Tensor(“Variable:0” dtypefloat32_ref) must be from the same graph as Tensor(“Reshape:0”,…

XML —— DTD介绍

一、DTD介绍 Document Type Definition&#xff1b; DTD是一种XML的约束方式&#xff0c;除了此种约束方式外&#xff0c;还有XSchema&#xff0c;XSchema比DTD的约束能力还要强&#xff0c;因此DTD正在逐渐淘汰&#xff1b; DTD的目的就是约束XML标签的写法&#xff1b;比如在…

error:1407742E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert protocol version

更新的软件可以解决 TortoiseGit-preview-2.5.7.0-20180127-b2d00f8-64bit.msi和Git-2.16.2-64-bit.exe。 链接地址为&#xff1a; https://github.com/git-for-windows/git/releases/download/v2.16.2.windows.1/Git-2.16.2-64-bit.exe https://download.tortoisegit.org/tgi…

Linux 图片传输功能c/c++(初版)

由于深度学习任务的需要&#xff0c;要在程序里面嵌入一个module。 这个module 的功能是接收来自ios客户端的图片。并且传送给深度学习分类器进行处理。 于是看了看各种各样的 module 实现方案。 先是用IO函数把图片以数组的方式存起来。 再和服务器建立连接&#xff0c;socket…

Val编程-val系列编程思想

利用Val语言可以编写出各种各样的应用程序。正如windows phone面临的窘境一样&#xff0c;受众太小&#xff0c;市场不大。应用程序不多&#xff0c;所以也谈不上成熟。国内的应用程序基本上就是简单的小程序&#xff0c;谈不上什么编程思想。国外许多都是基于kernel的而衍生出…

Celery的实践指南

Celery的实践指南celery原理&#xff1a;celery实际上是实现了一个典型的生产者-消费者模型的消息处理/任务调度统&#xff0c;消费者(worker)和生产者(client)都可以有任意个&#xff0c;他们通过消息系统&#xff08;broker&#xff09;来通信。典型的场景为&#xff1a;客户…

【pyqt5学习】——bug修复,利用qt资源库qrc文件进行背景图像设置,不显示图像

目录 bug描述 bug分析 bug解决 bug描述 利用下面文章的方法进行资源设置后&#xff0c;有的显示了有的没有显示 【pyqt5学习】——pyqt5中.qrc资源文件的创建与编写_有情怀的机械男的博客-CSDN博客_python qrc目录一、说明二、安装pyqt5以及相关工具&#xff08;pyqt5、pyuic…

Datalore:用于机器学习可视化的新Web方案!

前不久&#xff0c;JetBrains团队发布了Datalore&#xff0c;这是一款基于云的web应用程序&#xff0c;用于构建机器学习模型并在Python中创建丰富的可视化。最新的测试版本旨在简化构建机器学习模型的流程&#xff0c;并帮助开发人员进行数据分析。由于Datalore的智能编码辅助…

Val3语言介绍

Val3语言是一门专门针对特定工业机器人的一门语言。在墙内有关这方面的介绍非常的少。在墙外维基百科上有一篇详细介绍的,有空FQ摘抄在这里。 Val3是使用XML格式。可以使用XML编辑器来进行编写VAL3的程序&#xff0c;可直接在模拟器上或者示教盒上编程&#xff0c;一般推荐使用…

网络层相关问题

1.说一下网络层的总体结构。 2.有没有看过源码&#xff1f; A.继承Request   B.打日志   C.修改参数 3.说一下Volley整体结构。 4.有了解过OkHttp吗&#xff1f; 5.说一下OkHttp和Volley的区别&#xff1f;转载于:https://www.cnblogs.com/jarvisyin/p/6389553.html

CSS魔法堂:重拾Border之——图片作边框

前言 当CSS3推出border-radius属性时我们是那么欣喜若狂啊&#xff0c;一想到终于不用再添加额外元素来模拟圆角了&#xff0c;但发现border-radius还分水平半径和垂直半径&#xff0c;然后又发现border-top-left/right-radius的水平半径之和大于元素宽度时&#xff0c;实际值会…

共享内存简介和mmap 函数

一、共享内存简介 共享内存区是最快的IPC形式&#xff0c;这些进程间数据传递不再涉及到内核&#xff0c;换句话说是进程不再通过执行进入内核的系统调用来传递彼此的数据。 即每个进程地址空间都有一个共享存储器的映射区&#xff0c;当这块区域都映射到相同的真正的物理地址空…

【pyqt5学习】——QToolTip,QLabel控件,伙伴关系

目录 0、学习资源 1、给控件设置提示信息——QToolTip 2、QLabel控件&#xff08;显示图像、设置超链接、信号绑定&#xff09; 3、QLabel伙伴关系 1&#xff09;代码 2&#xff09;效果 3&#xff09;知识点addWidget 0、学习资源 PyQt5教程&#xff0c;来自网易云课堂…

Hello IT

从高中的计算机课开始学习如何按下开机键&#xff0c;如何上网&#xff0c;如何背诵五笔字根&#xff0c;再到大学中如何使用office,利用C编码做算法&#xff0c;到现在IT中的伪一员&#xff0c;时间算起来也不短&#xff0c;然正在入门是在2010年8月杭州参加嵌入式培训&#x…

ARM指令集2

ARM指令集2 ARM微处理器支持加载/存储指令用于在寄存器和存储器之间传送数据&#xff0c;加载指令用于将存储器中的数据传送到寄存器&#xff0c;存储指令则完成相反的操作。 LDR指令&#xff08;与MOV有区别&#xff0c;MOV只能操作通用寄存器&#xff09; LDR指令格式为&…

SylixOS中select原理及使用分析

2019独角兽企业重金招聘Python工程师标准>>> 1. select接口简介 1.1 select接口使用用例 select是操作系统多路I/O复用技术实现的方式之一。 多路I/O复用技术大致使用场景为&#xff1a;构造一张感兴趣的文件描述符列表&#xff0c;然后调用多路复用的IO接口&#x…

【pyqt5学习】——QLineEdit学习(回显模式)

目录 1、回显模式 2、成果显示 3、知识点 1&#xff09;FormLayout布局添加addRow方法 2&#xff09;在输入框显示灰色提示字体&#xff0c;输入内容时消失setPlaceholderText 3&#xff09;设置回显模式setEchoMode 4、完整代码 1、回显模式 QLineEdit控件的主要功能是输…

有关机械手臂控制中的两个重要输入参数

1.在机械手臂中有两个重要参数。一个是编码器的值&#xff0c;另外一个是马达的电流值。根据这两个可以获得机械手臂的运动学&#xff0c;动力学的一些数据。第一重要特征参数 是DH参数&#xff0c;另外一个就是每个轴的质心参数。

MySQL的权限分配

MySQL 赋予用户权限命令的简单格式可概括为&#xff1a;grant 权限 on 数据库对象 to 用户&#xff0c;如 GRANT PRIVILEGES ON datebase.* to user% IDENTIFIED by passwd;一、给表数据赋权 grant 普通数据用户&#xff0c;查询、插入、更新、删除 数据库中所有表数据的权利。…

用HttpURLConnection发送http请求

//发送http请求try {//1.使用网址构造一个URL对象 URL url new URL(path);//2.获取连接对象 HttpURLConnection conn (HttpURLConnection) url.openConnection();//3.设置一些属性 //设置请求方式&#xff0c;注意大写conn.setRequestMethod("GET");//设置请求超时…