Chinaunix首页 | 论坛 | 博客
  • 博客访问: 291899
  • 博文数量: 82
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 874
  • 用 户 组: 普通用户
  • 注册时间: 2015-03-21 09:58
个人简介

traveling in cumputer science!!

文章分类

全部博文(82)

文章存档

2016年(13)

2015年(69)

我的朋友

分类: Python/Ruby

2015-11-24 12:47:06

1. set() remove the repeat elements

点击(此处)折叠或打开

  1. >>> seq = [1,2,3,1,2,3,'a','hello','a','world']
  2. >>> seq_set = set(seq)
  3. >>> seq_set
  4. set(['a', 1, 2, 3, 'world', 'hello']) #去除了重复对象
  5.   
  6. >>> string = "hello world"
  7. >>> string_set = set(string)
  8. >>> string_set
  9. set([' ', 'e', 'd', 'h', 'l', 'o', 'r', 'w']) #sting也是Python中的一种序列
  10.   
  11. #set是一种集合,当然可以使用 in/not in, len
  12. >>> 'h' in string_set
  13. True
  14. >>> 'a' in string_set
  15. False
  16. >>> len(string_set)
  17. 8
  18.   
  19. #set的增删操作
  20.   
  21. # s.add(x)
  22. # 向 set “s”中增加元素 x
  23.   
  24. # s.remove(x)
  25. # 从 set “s”中删除元素 x, 如果不存在则引发 KeyError
  26.   
  27. # s.discard(x)
  28. # 如果在 set “s”中存在元素 x, 则删除
  29.   
  30. # s.pop()
  31. # 删除并且返回 set “s”中的一个不确定的元素, 如果为空则引发 KeyError
  32.   
  33. # s.clear()
  34. # 删除 set “s”中的所有元素
2.set集合操作

点击(此处)折叠或打开

  1. #子集运算
  2. >>> s = set([1,2,3,4,5])
  3. >>> t = set([1,2,3])
  4. >>> s.issubset(t) #s是否为t的子集,相当于s<=t
  5. False
  6. >>> t.issubset(s)    #t是否为s的子集,相当于s>=t
  7. True
  8. >>> s<=t
  9. False
  10. >>> t<=s
  11. True
  12. >>> s<t
  13. False
  14. >>> s>t
  15. True
  16. >>> s==t
  17. False
  18. >>> x = set([1,2,3])
  19. >>> x==t #两set是否相等
  20. True


  21. >>> set1 = set([1,2])
  22. >>> set2 = set([2,3])
  23. # 合集
  24. # s.union(t)
  25. # s | t
  26. # 返回一个新的 set 包含 s 和 t 中的每一个元素
  27. >>> set1.union(set2)
  28. set([1, 2, 3])
  29. >>> set1 | set2
  30. set([1, 2, 3])
  31. # 并集
  32. # s.intersection(t)
  33. # s & t
  34. # 返回一个新的 set 包含 s 和 t 中的公共元素
  35. >>> set1.intersection(set2)
  36. set([2])
  37. >>> set1 & set2
  38. set([2])
  39. # 差集
  40. # s.difference(t)
  41. # s - t
  42. # 返回一个新的 set 包含 s 中有但是 t 中没有的元素
  43. >>> set1.difference(set2)
  44. set([1])
  45. >>> set1 - set2
  46. set([1])
  47. # 叫什么集 我也不知道
  48. # s.symmetric_difference(t)
  49. # s ^ t
  50. # 返回一个新的 set 包含 s 和 t 中不重复的元素
  51. >>> set1.symmetric_difference(set2)
  52. set([1, 3])
  53. >>> set1 ^ set2
  54. set([1, 3])


  55. # union(), intersection(), difference() 和 symmetric_difference()这种函数版本将会接受任何iterable对象作为参数。
  56. # 相反,它们的运算符版本(operator based counterparts)要求参数必须是 sets。

  57. >>> set1.union([3,4,5])
  58. set([1, 2, 3, 4, 5])
  59. >>> set1 | [3,4,5]

  60. Traceback (most recent call last):
  61.   File "", line 1, in <module>
  62.     set1 | [3,4,5]
  63. TypeError: unsupported operand type(s) for |: 'set' and 'list'
  64. >>>


  65. # 另外还有
  66. # s.update(t)
  67. # s |= t
  68. # 返回增加了 set “t”中元素后的 set “s”

  69. # s.intersection_update(t)
  70. # s &= t
  71. # 返回只保留含有 set “t”中元素的 set “s”

  72. # s.difference_update(t)
  73. # s -= t
  74. # 返回删除了 set “t”中含有的元素后的 set “s”

  75. # s.symmetric_difference_update(t)
  76. # s ^= t
  77. # 返回含有 set “t”或者 set “s”中有而不是两者都有的元素的 set “s”

reference from: http://blog.csdn.net/sicofield/article/details/40083653
阅读(1186) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~