您现在的位置是:首页 > 文章详情

集合

日期:2018-04-04点击:389

set

什么是集合?

1.不同元素组成
2.集合是无序的
3.集合中的元素必须是不可变类型。

定义集合

s = {1,2,3,4,33,3,4,5} print(type(s)) --- class 'set' print(s) --- {33, 2, 3, 4, 5, 1}

集合是无序的,去重的。

s = {'hello','world','alex','alex'} print(s) --- {'alex', 'hello', 'world'}

集合必须是可hash类型

s = {[1,2,3],1} --- TypeError: unhashable type: 'list'

直接用set定义一个集合

s = set('hello') print(s) --- {'l', 'e', 'o', 'h'}

将其它类型转换为set类型

s = set(['alex','alex','hehe']) print(s) --- {'hehe', 'alex'}

集合的内置放法

add ---- 添加元素

s = {1,2,3,4} s.add('s') s.add('3') s.add(3) print(s) --- {'s', 1, 2, 3, 4, '3'}

clear ---- 清空元素

s.clear() print(s) --- set()

copy ----复制

s1 = s.copy() print(s1) --- {1, 2, 3, 4, 's', '3'}

pop ---- 删除,随机的删除,取出

s = {'s',3,1,2,3,4} s.pop() print(s) --- {2, 3, 4, 's'}

remove ---- 删除指定元素

s = {'s',3,1,2,3,4} s.remove(3) print(s) --- {1, 2, 4, 's'}

discard ---- 当删除不存在的元素时不会报错--丢弃,放弃

s = {'s',3,1,2,3,4} s.discard('asdfasdf') print(s) --- {1, 2, 3, 4, 's'}

集合关系运算

计算出既学linux又学python的人

python_l = ['ctg','zzgx','zy'] linux_l = ['zy','ctg'] python_and_linux_l = [] for p_name in python_l: if p_name in linux_l: python_and_linux_l.append(p_name) print(python_and_linux_l) --- ['ctg', 'zy']

使用集合计算出结果

intersection ---- 求两个集合的交集

p_s = set(python_l) l_s = set(python_l) print(p_s,l_s) print(p_s.intersection(l_s)) print(p_s&l_s) --- {'zy', 'ctg', 'zzgx'} {'hehe', 'zy', 'ctg'} {'zy', 'ctg'} {'zy', 'ctg'}

union ---- 求并集

python_l = ['ctg','zzgx','zy'] linux_l = ['zy','ctg'] p_s = set(python_l) l_s = set(linux_l) print(p_s.union(l_s)) print(p_s|l_s) --- {'ctg', 'zy', 'zzgx'} {'ctg', 'zy', 'zzgx'}

差集

 python_l = ['ctg','zzgx','zy'] linux_l = ['zy','ctg','hehe'] p_s = set(python_l) l_s = set(linux_l) print(p_s-l_s) print(l_s-p_s) print(p_s.difference(l_s)) --- {'zzgx'} {'hehe'} {'zzgx'}

symmetric_difference ---- 交叉补集 -- 将两个集合中不同的元素取出

python_l = ['ctg','zzgx','zy'] linux_l = ['zy','ctg','hehe'] p_s = set(python_l) l_s = set(linux_l) print(p_s.symmetric_difference(l_s)) print(p_s^l_s) --- {'hehe', 'zzgx'} {'hehe', 'zzgx'}

集合的其它内置方法

difference_update ---- 求完差集后直接赋值给p_s.

python_l = ['ctg','zzgx','zy'] linux_l = ['zy','ctg','hehe'] p_s = set(python_l) l_s = set(linux_l) print(p_s,l_s) p_s.difference_update(l_s) # 等价于 p_s=p_s-l_s print(p_s) --- {'zy', 'ctg', 'zzgx'} {'ctg', 'hehe', 'zy'} {'zzgx'}

isdisjoint ---- 如果两个集合之间没交集,则返回一个True

s1={1,2} s2={3,5} print(s1.isdisjoint(s2)) --- True

issubset ---- 判断一个集合是否是另一个集合的子集

s1 = {1,2} s2 = {1,2,3} print(s1.issubset(s2)) print(s2.issubset(s1)) --- True` False

issuperset ---- 判断一个集合是否是另一个集合的父集

s1 = {1,2} s2 = {1,2,3} print(s1.issubset(s2)) print(s2.issubset(s1)) --- False True

update ---- 将一个集合和另一个集合合并并赋值,可以放多个值

s1={1,2} s2={1,2,3} s3={4,5} s1.update(s2,s3) print(s1) --- {1, 2, 3, 4, 5}

frozenset ---- 定义不可变集合

s = frozenset('hello') print(s) s.pop() --- Error...报错

将列表去重

names=['alex','alex','wupeiqi'] names=list(set(names)) print(names) --- {'wupeiqi', 'alex'} ['wupeiqi', 'alex']
原文链接:https://yq.aliyun.com/articles/576286
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章