欢迎各位兄弟 发布技术文章
这里的技术是共享的
【1】创建:
从list或tuple中创建,我就会这两种。不能从数字直接创建:a=set(1)错误!
1.sa=set(列表)
2.sa=set(tuple)
代码:
【2】交集
sc = sa & sb
sc=sa.intersection(sb)
sc=sb.intersection(sa)
三种是等价的
将交集赋值给当前集合:
sa=sa & sb --- 不推荐
sa.intersection_update(sb) --貌似是原位操作,消耗少。推荐
【3】并集
sc=sa|sb
sc=sa.union(sb)
sc=sb.union(sa)
将并集赋值给当前集合: sa.update(sb)
【4】集合之差
属于集合A但不属于集合B
cs=sa-sb
sc=sa.difference(sb)
将集合之差赋值给原集合:
sa=sa-sb
sa.difference_update(sb)
【6】集合之差的并集。
sc= sa ^ sb 相当于 (sa-sb)|(sb-sa)
sc=sa.symmetric_difference(sb)
sc=sb.symmetric_difference(sa)
赋值给原集合:
sa.symmetric_difference_update(sb)
【7】
更改元素:
a.add(XXX)
a.pop() --随机删除
a.remove(XX) 删除XX,XX必须存在,否则出错
a.discard(XX) 删除XX,XX若不存在,则do nothing
a.clear() --情空
【8】
判断
sa.issuperset(sb) 若sa包含sb,返回True 相当于 sa>=sb (sa>sb 真包含)
sa.issubset(sb) 若sa包含于sb,返回True 相当于 sa<=sb
sa.isdisjoint(sb) 若 sb&sa == set([]),(如果交集为空 即无相交集 )返回True
【9】frozenset:元素一经创建,不可增加、删除和修改。因此没有add、pop、discard、remove和所有以_update结尾的方法。但可以作为左值接受赋值。
frozenset和set混合运算时,返回的值以左边的操作变量为准。
frozenset(a) | set(b) 的返回值就是frozenset,
set(a) | frozenset(b) 的返回值就是set
分类: Python |
集合:集合是具有某种特定性质的事物的总体;
引入时间:python 2.3 以后版本, 位于Stes模块;
set(tuple)
集合的特点:交集和并集
a=set(range(10))
b=set(range(20))
c=a|b
print c
set([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19])
d=a&b
print d
set([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
函数:
1.issubset
a.issubset(b)
2.add
a=set([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
a.add(11)
print a
set([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11])
3.clear
4.copy
5.difference
a=set([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
b=set([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19])
b.difference(a)
set([10, 11, 12, 13, 14, 15, 16, 17, 18, 19])
6.remove
7.isdisjoint
8.issuperset
b.issuperset(a)
超集定义:如果一个集合S2中的每一个元素都在集合S1中,且集合S1中可能包含S2中没有的元素,则集合S1就是S2的一个超集。 S1是S2的超集,则S2是S1的真子集,反之亦然
9.union
a.union(d)
10.update
a.update(b)
11.pop
a.pop()
12.discard
a.discard(2)
红色代表示例代码