han8809 发表于 2018-8-10 10:19:34

Python-集合


  删除列表中重复的元素:l =
  - 强制转化列表为集合类型:list(set(l))
  - 将列表转化为字典,拿出里面的所有key值: dict.fromkeys(l).keys()


  实现switch的两种方法:
  - if...elif...else...
  - 通过字典实现: d= {"key",func}
  if oper in d.keys():
  d()
  else:
  print "error"
  集合
  一.集合的定义
  不可变的数据类型一定可哈希;hash()内置函数可以判断某个类型是否可哈希;
  集合是无序的,不重复的数据组合
  集合里不能定义列表

  二.集合的关系测试
  s1 = {1, 2, 3}
  s2 = {2, 3, 4}
  s3 = {1, 2}
  s4 = {5}
  print "s1,s2,s3的交集:", s1.intersection(s2, s3)
  print "s1,s2,s3的交集:", s1 & s2 & s3
  print "s1,s2,s3的并集:", s1.union(s2, s3)
  print "s1,s2,s3的并集:", s1 | s2 | s3
  print "s1-s2的差集:", s1.difference(s2)
  print "s1-s2的差集:", s1 - s2
  print "s1-s2-s3的差集:", s1.difference(s2, s3)
  print "s1-s2-s3的差集:", s1 - s2 - s3
  print "s2-s1的差集:", s2.difference(s1)
  print "s1和s2的对等差分:", s1.symmetric_difference(s2)
  print "s1和s2的对等差分:", s1 ^ s2
  print "s2和s1的对等差分:", s2.symmetric_difference(s1)
  # s.isdisjoint(s2)如果有交集,返回False;否则,返回True;
  print "s1和s4是否没有交集:", s1.isdisjoint(s4)
  print "s3是否为s1的子集:", s3.issubset(s1)
  print "s1是否为s3的父集:", s1.issuperset(s3)


  三.集合的增删改查:
  1.增加:
  s.add(4), 增加一个元素

  s.update(s1)


  2.删除:
  s.remove(1),      删除存在的元素,如果不存在,直接报错;

  s.discard(1)         删除存在的元素,如果不存在,do nothing;

  s.pop(),                随即删除集合元素,不加任何参数;

  3.复制:
  s1 = s.copy()       s和s1的id不同

  4.清空: s.clear()

  5.冻集(frozenset)
  - 冻住的集合,不能增删改;
  - frozenset(set)
  - set(frozenset)

  6.其他
  显示集合的长度

  检测某元素是否为集合s的成员,返回布尔值
页: [1]
查看完整版本: Python-集合