`

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. x in s  
  93. 测试 x 是否是 s 的成员  
  94.   
  95. x 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() 类型支持。  

 

参考至:http://blog.csdn.net/business122/article/details/7541486

如有错误,欢迎指正

邮箱:czmcj@163.com

 

分享到:
评论

相关推荐

    python组合数据类型

    * `set()`: 可以将其他数据类型变成集合类型 集合类型支持的操作有交集、并集、差集和补集等。 列表类型 列表类型用中括号 `[]` 表示,列表没有长度限制,元素类型可以不同。列表类型的特点是: * 列表中元素...

    Python 集合set详解

    1、本文主要讲解了在Python中有关集合的一些知识。主要包含构造集合、基本计算、访问项目、内置函数和内置方法等。 2、本文件是markdown文件,是本人辛辛苦苦整理出来的,一分耕耘一份收获。 3、禁止盗用,转载记得...

    python判断一个集合是否包含了另外一个集合中所有项的方法

    本文实例讲述了python判断一个集合是否包含了另外一个集合中所有项的方法。... 您可能感兴趣的文章:Python中集合类型(set)学习小结Python set集合类型操作总结Python中的集合类型知识讲解Python通过递归遍历出

    Python集合(Set):一种无序、可变的数据结构

    以上就是关于Python集合(Set)的基本介绍、操作及应用。了解并熟练掌握集合的使用,对于提升Python编程效率和代码质量有着积极的作用。无论是进行数据处理、算法实现还是优化代码逻辑,集合都是一个不可或缺的工具...

    测量程序编制 - python 50数据类型:Set(集合)-差集.pptx

    总结来说,Python集合的差集操作提供了灵活的方式来处理不重复元素的子集。`-`运算符和`difference()`方法都可用于创建差集,但前者返回新集合,后者保持原有集合不变。而`difference_update()`方法则直接在原集合上...

    Python语言基础:set集合运用.pptx

    Python中的set集合是一种非常实用的数据结构,它包含了不重复的元素且无特定顺序。set集合在数据处理中常用于去重、成员关系测试以及集合运算等场景。下面将详细讲解set集合的创建、添加元素、移除元素、计算元素个...

    Python set集合类型操作总结

    Python中除了字典,列表,元组还有一个非常好用的数据结构,那就是set了,灵活的运用set可以减去不少的操作(虽然set可以用列表代替) 小例子 1.如果我要在许多列表中找出相同的项,那么用集合是最好不过的了,用集合只用一...

    测量程序编制 - python 49数据类型:Set(集合)-并集.pptx

    本教程主要关注的是Python集合中的并集操作。 首先,我们可以使用两种方法来创建集合的并集: 1. **运算符 |**:这是Python集合的并集运算符,用于合并两个集合的所有元素。重复的元素会被自动去除,因此结果集合...

    浅谈Python 集合(set)类型的操作——并交差

    ### Python 集合(set)类型的操作详解:并集、交集、差集与对称差集 在Python编程语言中,集合(Set)是一种非常有用的数据结构,它由一系列不重复的元素组成,并且是无序的。集合提供了一系列高效的操作方法,包括...

    测量程序编制 - python 52数据类型:Set(集合)-函数.pptx

    以下是对标题和描述中提到的Python集合(Set)函数的详细说明: 1. **add()**: 该方法用于向集合中添加一个元素。如果元素已存在,不会执行任何操作。例如: ```python my_set = {"apple"} my_set.add("banana")...

    python内置的集合set中元素顺序-python基础教程:set(集合).pdf

    Python中的集合(Set)是一种非常实用的数据...总的来说,Python集合提供了一种高效的方式来处理不重复的元素集合,适用于需要快速查找和去重的场景。在编程实践中,集合经常用于优化性能,特别是在处理大量数据时。

    java中jython操作把python数据类型转成java类型

    这将创建一个包含Python集合元素的Java Set。 4. 基本数据类型转换: 对于Python的基本数据类型,如整型、浮点型和字符串,Jython会自动进行转换,因为它们在Java中也有对应的类型。例如,Python的整数会转换为...

    Python程序基础:字典和集合综合案例.pptx

    集合(set)与数学中集合的概念一致,即包含0个或多个数据项的无序组合。 集合中的元素不可重复 元素??型只能是固定数据类型,如整数、浮点数、字符串、元组等 不能是列表、字典和集合等可变数据类型;创建集合的方式...

    测量程序编制 - python 44数据类型:Set(集合)-概述.pptx

    在本讲解中,我们将深入探讨Python集合的特性、创建方法以及相关的操作。 1. 集合的表示形式: 集合通常使用大括号 `{}` 来表示,元素之间以逗号 `,` 分隔。例如:`{element1, element2, ..., elementn}`。请注意,...

    Python中的集合应用:数据去重与集合操作全解析

    在Python中,集合(set)是一个无序且不包含重复元素的容器。集合提供了丰富的数学操作,如并集、交集、差集和对称差集等,使其成为处理数据去重和集合操作的强大工具。本文将详细介绍Python中集合的使用方法,包括...

    测量程序编制 - python 51数据类型:Set(集合)-对称差集.pptx

    在Python编程语言中,集合(Set)是一种无序且不包含重复元素的数据结构。集合提供了多种操作,包括对称差集。对称差集是指两个集合中各自独有的元素,即那些既不在A&B中的元素。这里我们将深入探讨如何在Python中...

    Python集合类型实例.pdfPython集合类型实例.pdf-综合文档

    首先,标题中提到的“Python集合类型实例.pdf”暗示了文档的核心内容是关于Python语言中集合类型的相关实例和使用方法。集合(Set)是Python中的基本数据结构之一,用于存储不重复的元素集合。Python的集合类似于...

    测量程序编制 - python 46数据类型:Set(集合)-添加.pptx

    本篇文档主要介绍了如何向Python集合中添加元素,重点讲述了`add()`和`update()`两个方法。 1. `add()` 方法 `add()` 方法用于向集合中添加单个元素。该方法接受一个参数,即要添加到集合中的元素。例如: ```...

    测量程序编制 - python 48数据类型:Set(集合)-交集.pptx

    在Python编程语言中,集合(Set)是一种独特的数据结构,它包含了唯一且无序的元素。集合的操作主要包括交集、并集、差集和对称差集,这些操作在处理数据时非常有用。本讲解主要关注集合的交集操作。 1. **交集**:...

    Python数据类型运算符

    Python 中的数据类型可以分为数值类型、布尔类型、字符串类型、列表类型、元组类型、字典类型和集合类型等。每种数据类型都有其特点和应用场景。 数值类型包括整型 int、浮点型 float 和复数类型 complex。整型 ...

Global site tag (gtag.js) - Google Analytics