Python集合以及操作、常用函数

我会带着你远行 2022-03-12 04:42 304阅读 0赞
  1. # 集合
  2. s = set('zhangsan zhangsan lisi')
  3. a = ['zhangsan', 'lisi', 'wangwu', 'zhangsan']
  4. b = set(a) # 列表转换为集合set 会自动去重
  5. print(b)
  6. c = list(s) # set集合转换为list列表会自动去重
  7. print(c)
  8. # 会报错 因为列表时不可哈希的 字典也是不可哈希的 (里面的元素的哈希不可哈希)
  9. # li = [[1, 2], 3, 'joe'] # 变成 li = [1, 3, 'joe'] 就可以啦
  10. # s = set(li)
  11. # print(s)
  12. # set 是无序的 不重复的 意味着 没有索引 无法根据索引找到
  13. # set 是可变集合 而frozenset是不可变集合
  14. # 集合的更新 添加
  15. s = ['aa', 'bb', 'cc']
  16. s = set(s)
  17. s.add('u') # 添加函数
  18. print(s)
  19. s.update('zhang') # 原内容保留 更新 以一个序列多个元素添加到集合中
  20. s.update('wwwwwwwwwww') # 会只添加一个w 会去重
  21. s.update(['www', 100]) # 会以元素添加到集合中
  22. print(s)
  23. # 集合的删除
  24. s.remove('bb') # 删除指定元素
  25. s.pop() # 随机删除元素
  26. # s.clear() # 清空集合
  27. print(s)
  28. # in 或 not in 来判断元素是否在set里面
  29. print(100 in s)
  30. print(101 in s)
  31. print(100 not in s)
  32. print(101 not in s)
  33. # 等价 == != <= >=
  34. # == 必须完全一样
  35. print(set('joesmith') == set('joesmith 11')) # 结果为False
  36. print(set('joesmith') == set('joesmithhhhhhh')) # 结果为True 因为 后面的集合会进行去重,然后就会和前面的一样了
  37. print(set('joe') < set('joesmith')) # True 属于 包含关系
  38. print(set('joe') < set('joe')) # False 不是包含关系 是等于关系
  39. print(set('joe') or set('smith'))
  40. print(set('joe') and set('smith'))
  41. print(set('joe') or set('smith'))
  42. print(set('joew') and set('joe12'))
  43. # ①当a and b的结果为True的时候,返回的并不是True,而是运算结果的最后一位变量的值。这里是返回b的值(b and a为真,返回的是a的
  44. # 值),当a and b结果为False的时候,返回的是第一个False的值,如a和b都为False那么返回a的值,a为真,b为假,那么返回的是b的值
  45. # ②当a or b为真的时候,返回的是第一个真的变量的值,如,当a和b都为真,那么返回的是a。若a or b假的时候,返回的是最后一个判断
  46. # 条件的值,这里返回的是b的值
  47. # 交 差 并集
  48. a = set([1, 2, 3, 4, 5])
  49. b = set([4, 5, 6, 7, 8])
  50. print(a.intersection(b)) # 交集
  51. print(a & b) # 交集
  52. print(a.union(b)) # 并集
  53. print(a | b) # 并集
  54. print(a.difference(b)) # 差集
  55. print(a - b) # 差集
  56. print(b.difference(a)) # 差集
  57. print(b - a) # 差集
  58. print(a.symmetric_difference(b)) # 对称差集
  59. print(a ^ b) # 对称差集
  60. # 父集 超集
  61. a = set([1, 2, 3, 4, 5])
  62. b = set([4, 5])
  63. print(a.issuperset(b)) # a 是 b 的父集
  64. print(a > b) # a 是 b 的父集
  65. print(a.issubset(b))
  66. print(a < b)
  67. print(a.isdisjoint(b)) # 如果没有交集就会返回True
  68. print(a.discard(3)) # 丢弃指定元素 如果不存在不做什么

要点:

  • 列表转集合会自动去重
  • 集合转列表会自动去重
  • 列表转集合或是集合转列表如果元素不能够哈希,就会报错
  • 集合添加 add(‘c’)
  • update(‘zhangwwww’) 原内容保留 以多个元素添加,默认去重
  • update([‘www’,999]) 会以元素添加到集合中 ‘www’ 也会添加到集合中
  • remove(‘bb’) 删除指定元素
  • pop() 随机删除元素
  • clear() 清空集合
  • 用in 和 not in 来判断元素是否在集合中
  • == 必须完全一样 > <包含
  • and or 较为复杂可以看代码注释理解
  • 交集intersection(),&
  • 并集 union() ,|
  • 差集 difference() ,-
  • 对称差集 symmetric_difference() , ^
  • 父集 issuperset() >
  • 子集 issubset() <
  • isdisjoint() 没有交集就返回True 有交集则返回False
  • discard() 丢弃指定元素,如果不存在则不做什么

发表评论

表情:
评论列表 (有 0 条评论,304人围观)

还没有评论,来说两句吧...

相关阅读