集和(set)——字典的近亲
实现列表去重:
方法1:
li = [1, 2, 3, 4, 3, 2]
s = set(li)
l = list(s)
print set(l)
方法2:
li = [1, 2, 3, 4, 3, 2]
d = {}.fromkeys(li)
print d.keys()
*集和是无序的,不重复的数据类型,不支持索引,切片,重复,和连接,但支持成员操作符(in,not in),支持for循环,是可迭代的
**两个功能:去重
实现关系测试(交集,并集,差集,是否子/父集,是否没有交集)
1. 集和的定义:
s = {}
print type(s) ##花括号里面为空,则默认为字典类型
方法1(直接定义法):
s = {1,2,3,2,5}
print type(s)
方法2(工厂函数法):
s = set()
print type(s)
s = set([1,2,3,2,5])
print s
2. 集合的增删改查:
1)增:
s = {1, 2, 3, 4, 3, 2}
print s
s.add(5)
print s
s1 = {"a", "b", "c"}
s.update(s1) ##s+s1
print s
2)删:
s = {1, 2, 3, 4, 3, 2}
s.pop() ##随机删除一个元素
s.remove("2") ##删除一个元素,该元素必须存在于集合中,否则报错
s.discard("3") ##删除一个元素,该元素必须存在于集合中,否则不做任何操作
s.clear() ##清空集和
3)查(求集和关系):
s1 = {1,2,3,5}
s2 = {2,4,6,7}
print s1 & s2
print s1.intersection(s2) ##求交集
print s1.intersection_update(s2) ##求交集,并赋给S1
print s1 | s2
print s1.union(s2) ##求并集
print s1 - s2
print s1.difference(s2) ##求差集
print s1 ^ s2
print s1.symmetric_difference ##求对等差分(并集-交集)
print s1.issubset(s2) ##判断子集
print s1.issuperset(s2) ##判断父集
print s1.isdisjoint(s2) ##判断是否没有交集