5.4 集合 (supercalifragilisticexpialidocious)

Python 也包含了 set (集合) 的数据结构。一个 set 是一组没有重复元素的无序集合。基本的用法包含了成员测试和消除重复登入。Set 对象也支持数学上的操作,比如并集、交际、差集、对称差。

花括号或者 set() 函数可以用来创建一个 set。注意,创建一个空的 set 必须使用 set() 函数,不要使用 {}。后一种方法会创建出一个空的 字典,我们将在下一节讨论这种数据接结构。

下面是一个简短的示例:

  1. >>> basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
  2. >>> print(basket) # show that duplicates have been removed
  3. {'orange', 'banana', 'pear', 'apple'}
  4. >>> 'orange' in basket # fast membership testing
  5. True
  6. >>> 'crabgrass' in basket
  7. False
  8. >>> # Demonstrate set operations on unique letters from two words
  9. ...
  10. >>> a = set('abracadabra')
  11. >>> b = set('alacazam')
  12. >>> a # a 中独有的字母
  13. {'a', 'r', 'b', 'c', 'd'}
  14. >>> a - b # a 中有,b 中没有的字母
  15. {'r', 'd', 'b'}
  16. >>> a | b # a 或 b 或 a b 都有的字母
  17. {'a', 'c', 'r', 'd', 'b', 'm', 'z', 'l'}
  18. >>> a & b # a b 都有的字母
  19. {'a', 'c'}
  20. >>> a ^ b # a 或 b 有,但是不是两者都有的
  21. {'r', 'd', 'b', 'm', 'z', 'l'}

和列表解析类似,也可以 集合解析

  1. >>> a = {x for x in 'abracadabra' if x not in 'abc'}
  2. >>> a
  3. {'r', 'd'}