集合

集合(set)和字典(dict)类似,它是一组 key 的集合,但不存储 value。集合的特性就是:key 不能重复。

集合常用操作

创建集合

set 的创建可以使用 {} 也可以使用 set 函数:

  1. >>> s1 = {'a', 'b', 'c', 'a', 'd', 'b'} # 使用 {}
  2. >>> s1
  3. set(['a', 'c', 'b', 'd'])
  4. >>>
  5. >>> s2 = set('helloworld') # 使用 set(),接收一个字符串
  6. >>> s2
  7. set(['e', 'd', 'h', 'l', 'o', 'r', 'w'])
  8. >>>
  9. >>> s3 = set(['.mp3', '.mp4', '.rmvb', '.mkv', '.mp3']) # 使用 set(),接收一个列表
  10. >>> s3
  11. set(['.mp3', '.mkv', '.rmvb', '.mp4'])

遍历集合

  1. >>> s = {'a', 'b', 'c', 'a', 'd', 'b'}
  2. >>> for e in s:
  3. ... print e
  4. ...
  5. a
  6. c
  7. b
  8. d

添加元素

add() 方法可以将元素添加到 set 中,可以重复添加,但没有效果。

  1. >>> s = {'a', 'b', 'c', 'a', 'd', 'b'}
  2. >>> s
  3. set(['a', 'c', 'b', 'd'])
  4. >>> s.add('e')
  5. >>> s
  6. set(['a', 'c', 'b', 'e', 'd'])
  7. >>> s.add('a')
  8. >>> s
  9. set(['a', 'c', 'b', 'e', 'd'])
  10. >>> s.add(4)
  11. >>> s
  12. set(['a', 'c', 'b', 4, 'd', 'e'])

删除元素

remove() 方法可以删除集合中的元素, 但是删除不存在的元素,会抛出 KeyError,可改用 discard()

看看例子:

  1. >>> s = {'a', 'b', 'c', 'a', 'd', 'b'}
  2. >>> s
  3. set(['a', 'c', 'b', 'd'])
  4. >>> s.remove('a') # 删除元素 'a'
  5. >>> s
  6. set(['c', 'b', 'd'])
  7. >>> s.remove('e') # 删除不存在的元素,会抛出 KeyError
  8. Traceback (most recent call last):
  9. File "<stdin>", line 1, in <module>
  10. KeyError: 'e'
  11. >>> s.discard('e') # 删除不存在的元素, 不会抛出 KeyError

交集/并集/差集

Python 中的集合也可以看成是数学意义上的无序和无重复元素的集合,因此,我们可以对两个集合作交集、并集等。

看看例子:

  1. >>> s1 = {1, 2, 3, 4, 5, 6}
  2. >>> s2 = {3, 6, 9, 10, 12}
  3. >>> s3 = {2, 3, 4}
  4. >>> s1 & s2 # 交集
  5. set([3, 6])
  6. >>> s1 | s2 # 并集
  7. set([1, 2, 3, 4, 5, 6, 9, 10, 12])
  8. >>> s1 - s2 # 差集
  9. set([1, 2, 4, 5])
  10. >>> s3.issubset(s1) # s3 是否是 s1 的子集
  11. True
  12. >>> s3.issubset(s2) # s3 是否是 s2 的子集
  13. False
  14. >>> s1.issuperset(s3) # s1 是否是 s3 的超集
  15. True
  16. >>> s1.issuperset(s2) # s1 是否是 s2 的超集
  17. False

参考资料