python set 集合复习--点滴

一、set特性:

set是一个无序不重复的元素集合。

集合对象是一组无序排列的可哈希的值,集合成员可以做字典中的键。集合支持用in和not in操作符检查成员,由len()内建函数得到集合的基数(大小),用for循环迭代集合的成员。但是因为集合本身是无序的,不可以为集合创建索引或执行切片( slice)操作,也没有键(keys)可用来获取集合中元素的值。

set和dict一样,只是没有value,相当于dict的key集合, 由于dict中的key是不重复的,且是不可变对象,因此set也有如下特性

1.不重复

2.元素为不可变对象

二、 创建set集合

>>> set('boy')
set(['y', 'b', 'o'])
>>>

 集合的添加

添加:add()方法和update()方法,add()作为一个元素添加,update()单个元素添加。

>>> n = set('boy')
>>> n
set(['y', 'b', 'o'])

>>> n.add('python')
>>> print n
set(['y', 'python', 'b', 'o'])

>>> n.update('ok')
>>> n
set(['y', 'python', 'k', 'b', 'o'])

例子2:

>>> se = {11,22,33}
>>> be = {22,44,55}

>>> se.update(be)
>>> se
set([33, 22, 55, 11, 44])

>>> se.update([66,77])
>>> print (se)
set([33, 66, 22, 55, 11, 44, 77])

>>> se.update('88')
>>> se
set([33, 66, 22, 55, '8', 11, 44, 77])

集合的删除

discard(),remove(),pop()

se = {11, 22, 33}

se.discard(11)

se.discard(44) # 移除不存的元素不会报错

print(se) se = {11, 22, 33}

se.remove(11) se.remove(44) # 移除不存的元素会报错

print(se)

se = {11, 22, 33} # 移除末尾元素并把移除的元素赋给新值

temp = se.pop() print(temp) # 33

print(se) # {11, 22}

取交集

se = {11, 22, 33}

be = {22, 55}

temp1 = se.intersection(be) #取交集,赋给新值

print(temp1) # 22

print(se) # {11, 22, 33}

temp2 = se.intersection_update(be) #取交集并更新自己

print(temp2) # None

print(se) # 22

或者

交集

>>> se&be
set([22])

并集

>>> se|be
set([33, 11, 22, 55])

差集

>>> se-be
set([33, 11])

集合的转换

>>> se = set(range(4))
>>> li = list(se)
>>> tu = tuple(se)
>>> st = str(se)

>>> print (li,type(li))
([0, 1, 2, 3], <type 'list'>)
>>> print (tu,type(tu))
((0, 1, 2, 3), <type 'tuple'>)
>>> print (st,type(st))
('set([0, 1, 2, 3])', <type 'str'>)

判断 

se = {11, 22, 33}

be = {22}

print(se.isdisjoint(be)) #False,判断是否不存在交集(有交集False,无交集True)

print(se.issubset(be)) #False,判断se是否是be的子集合

print(se.issuperset(be)) #True,判断se是否是be的父集合

原文地址:https://www.cnblogs.com/i1991/p/6894654.html