美文网首页
04 python中set的基本使用

04 python中set的基本使用

作者: 小码码 | 来源:发表于2018-06-27 11:57 被阅读38次

1 集合

1.1 集合的特征

  • 不同元素组成
  • 无序
  • 集合中元素必须是不可变类型

1.2 集合的定义

  • 直接定义
    {1,2,3,4}
  • 可变集合
>>> s=set('hello')
>>> s
set(['h', 'e', 'l', 'o'])
>>> 
>>> str_s=set(['alex','alex','sb'])
>>> print str_s
set(['sb', 'alex'])
  • 不可变集合 不能添加、修改、删除元素
>>> f=frozenset(s)
>>> f
frozenset(['h', 'e', 'l', 'o'])
>>> 

1.3 集合的内置方法

  • 列表去重
>>> name = ['xixi','sisi','jiji','lili','lili']
>>> s= set(name)
>>> s
{'lili', 'xixi', 'sisi', 'jiji'}
  • 集合转成list
>>> s= set(name)
>>> s
{'lili', 'xixi', 'sisi', 'jiji'}
>>> name=list(s)
>>> name
['lili', 'xixi', 'sisi', 'jiji']
>>>
  • 常用的内置方法
#add方法
>>> s.add(3)
>>> s
set(['h', 3, 'e', 'l', 'o'])
>>>
#clear方法
>>> s.clear()
>>> s
set([])
>>> 
#copy方法
>>> s2=s.copy()
>>> s2
set([])
>>> 
#pop  随机删除
>>> s={1,2,3,4,5,6}
>>> s
set([1, 2, 3, 4, 5, 6])
>>> s.pop()      #返回值为删除的元素
1
>>> s
set([2, 3, 4, 5, 6])
>>> 
#remove  删除指定元素,元素不存在时会报错
>>> s.remove(4)
>>> s
set([2, 3, 5, 6])
>>>
#discard  删除指定元素,元素不存在时不报错
>>> s.discard(5)
>>> s
set([2, 3, 6])
>>> s.discard('s')
>>> s
set([2, 3, 6])

1.4 集合的交集、并集、差集运算

  • 交集
>>> class_1=['zhangsan','lisi','xixi']
>>> class_2=['lili','lucy','xixi','mimi']
#低级写法
>>> class_12=[ ]
>>> for name in class_1:
...         if name in class_2:
...             class_12.append(name)
...     print class_12
#set写法
>>> c1=set(class_1)  #转成集合,去重
>>> c1
set(['lisi', 'zhangsan', 'xixi'])    
>>> c2=set(class_2)
>>> c2
set(['mimi', 'xixi', 'lili', 'lucy'])
>>> print c1.intersection(c2)  #求交集
set(['xixi'])
>>> print c1&c2  #求交集
set(['xixi'])
>>>
  • 并集
>>> print c1.union(c2)   #求并集
set(['lisi', 'mimi', 'xixi', 'lili', 'zhangsan', 'lucy'])
>>> print c1|c2   #求并集
set(['lisi', 'mimi', 'xixi', 'lili', 'zhangsan', 'lucy'])
>>>
  • 差集
>>> print c1.difference(c2)   #求c1的差集
set(['lisi', 'zhangsan'])
>>> print c2.difference(c1)  #求c2的差集
set(['mimi', 'lili', 'lucy'])
>>>
  • 交叉补集
>>> class1=['lili','lucy','mimi']
>>> class2=['cici','sisi','kiki','mimi']
>>> c1=set(class1)
>>> c1
{'lili', 'lucy', 'mimi'}
>>> c2=set(class2)
>>> c2
{'kiki', 'mimi', 'sisi', 'cici'}
>>> c1.symmetric_difference(c2)     #求交叉补集
{'lili', 'lucy', 'kiki', 'sisi', 'cici'}
>>> c=c1^c2     #求交叉补集
>>> c
{'lili', 'lucy', 'kiki', 'sisi', 'cici'}
>>>

1.5 set其它的内置函数

  • isdisjoint 判断是否有 交集,无交集返回true,有交集返回false
>>> c1.isdisjoint(c2)
False
>>>
  • issubset 判断是否是子集,是——返回true,否——返回false
>>> c1.issubset(c2)
False
>>>
  • issuperset 判断是否是父集,是——返回true,否——返回false
>>> c1.issuperset(c2)
False
>>>
  • update 更新多个值,而add只能更新一个值
>>> c1
{'lili', 'lucy', 'mimi'}
>>> c2=set(class2)
>>> c2
{'kiki', 'mimi', 'sisi', 'cici'}
>>> c1.update(c2)
>>> c1
{'lucy', 'kiki', 'lili', 'mimi', 'sisi', 'cici'}
>>>

相关文章

网友评论

      本文标题:04 python中set的基本使用

      本文链接:https://www.haomeiwen.com/subject/lhlvyftx.html