python set基本操作

本文介绍了Python中Set的基本操作及集合运算,包括创建、增删元素、判断子集、求合集、交集、差集和对称差集等,并对比了不同运算符与函数的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.set基本操作

[python]  view plain  copy
  1. >>> seq = [1,2,3,1,2,3,'a','hello','a','world']  
  2. >>> seq_set = set(seq)  
  3. >>> seq_set  
  4. set(['a'123'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”中的所有元素  
  35. >>> set1 = set([1])  
  36. >>> set1  
  37. set([1])  
  38. >>> set1.add(2)  
  39. >>> set1  
  40. set([12])  
  41. >>> set1.remove(3)  
  42.   
  43. Traceback (most recent call last):  
  44.   File "<pyshell#47>", line 1in <module>  
  45.     set1.remove(3)  
  46. KeyError: 3  
  47. >>> set1.remove(2)  
  48. >>> set1  
  49. set([1])  
  50. >>> set1.discard(2)  
  51. >>> set1  
  52. set([1])  
  53. >>> set1.discard(1)  
  54. >>> set1  
  55. set([])  
  56. >>> set1.add([1,2,3,4])  
  57.   
  58. Traceback (most recent call last):  
  59.   File "<pyshell#54>", line 1in <module>  
  60.     set1.add([1,2,3,4])  
  61. TypeError: unhashable type: 'list'  
  62. >>> set1 = set([1,2,3,4,5])  
  63. >>> set1.pop()  
  64. 1  
  65. >>> set1  
  66. set([2345])  
  67. >>> set1.clear()  
  68. >>> set1  
  69. set([])  
  70. >>>   

2.set集合操作

[python]  view plain  copy
  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.   
  22.   
  23. >>> set1 = set([1,2])  
  24. >>> set2 = set([2,3])  
  25. # 合集  
  26. # s.union(t)  
  27. # s | t  
  28. # 返回一个新的 set 包含 s 和 t 中的每一个元素  
  29. >>> set1.union(set2)  
  30. set([123])  
  31. >>> set1 | set2  
  32. set([123])  
  33. # 并集  
  34. # s.intersection(t)  
  35. # s & t  
  36. # 返回一个新的 set 包含 s 和 t 中的公共元素  
  37. >>> set1.intersection(set2)  
  38. set([2])  
  39. >>> set1 & set2  
  40. set([2])  
  41. # 差集  
  42. # s.difference(t)  
  43. # s - t  
  44. # 返回一个新的 set 包含 s 中有但是 t 中没有的元素  
  45. >>> set1.difference(set2)  
  46. set([1])  
  47. >>> set1 - set2  
  48. set([1])  
  49. # 叫什么集 我也不知道  
  50. # s.symmetric_difference(t)  
  51. # s ^ t  
  52. # 返回一个新的 set 包含 s 和 t 中不重复的元素  
  53. >>> set1.symmetric_difference(set2)  
  54. set([13])  
  55. >>> set1 ^ set2  
  56. set([13])  
  57.   
  58.   
  59. # union(), intersection(), difference() 和 symmetric_difference()这种函数版本将会接受任何iterable对象作为参数。  
  60. # 相反,它们的运算符版本(operator based counterparts)要求参数必须是 sets。  
  61.   
  62. >>> set1.union([3,4,5])  
  63. set([12345])  
  64. >>> set1 | [3,4,5]  
  65.   
  66. Traceback (most recent call last):  
  67.   File "<pyshell#36>", line 1in <module>  
  68.     set1 | [3,4,5]  
  69. TypeError: unsupported operand type(s) for |: 'set' and 'list'  
  70. >>>   
  71.   
  72.   
  73. # 另外还有  
  74. # s.update(t)  
  75. # s |= t  
  76. # 返回增加了 set “t”中元素后的 set “s”  
  77.   
  78. # s.intersection_update(t)  
  79. # s &= t  
  80. # 返回只保留含有 set “t”中元素的 set “s”  
  81.   
  82. # s.difference_update(t)  
  83. # s -= t  
  84. # 返回删除了 set “t”中含有的元素后的 set “s”  
  85.   
  86. # s.symmetric_difference_update(t)  
  87. # s ^= t  
  88. # 返回含有 set “t”或者 set “s”中有而不是两者都有的元素的 set “s”  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值