python set大小_python set集合

python set大小_python set集合集合set可变的无序的不重复的元素集合set定义初始化set()生成一个空集合set(iterable)可通过可迭代对象生产一个新的集合s1=set()s2=set(range(5))s3=set(list(range(10)))s4={}#这是字典的定义方法s5={9,10,11}#sets6={(1,2),3,’a’}s7={[1],(1,),1}#set的元素要…

大家好,又见面了,我是你们的朋友全栈君。

集合set

可变的

无序的

不重复的元素集合

set定义 初始化

set() 生成一个空集合

set(iterable) 可通过可迭代对象生产一个新的集合

s1 =set()

s2= set(range(5))

s3= set(list(range(10)))

s4= {} #这是字典的定义方法

s5 = {9,10,11} #set

s6 = {(1,2),3,’a’}

s7= {[1],(1,),1} #set的元素要求必须可以hash 列表不能hash

set的元素要求必须可以hash

目前学过的不可hash的类型有list、set

元素不可以索引

set可以迭代

set增加

add(elem)

增加一个元素到set中

如果元素存在,什么都不做

update(*others)

合并其他元素到set元素中来

参数others必须是可迭代对象

就地修改

set删除

remove(elem)

从set中移除一个元素

元素不存在,抛出异常keyError异常

discard(elem)

从set中移除一个元素

元素不存在,什么都不做

pop() -> item

移除并返回任意的元素

空集返回KeyError异常

clear()

移除所有元素

集合

基本概念

全集

所有元素的集合。例如实数集,所有实数组成的集合就是全集

子集subset和超集superset

一个集合A所有元素都在另一个集合B内,A是B的子集,B是A的超集

真子集和真超集

A是B的子集,切A不等于B,A就是B的真子集,B是A的真超集

并集

多个集合合并的结果

交集

多个集合的公共部分

差集

集合中除去和其他集合的公共部分

集合运算

并集

将两个集合A和B的所有元素合并在一起,组成的集合称作集合A与集合B的并集

union(*others) 返回和多个元素合并后的新集合

| 运算符重载  等同union

update(*others) 和多个集合合并,就地修改

|= 等同update

交集

集合A和集合B,由所有属于A且属于B的元素组成的集合

intersection(*others)  返回和多个集合的并集

& 等同于intersection

intersection_update(*others) 获取和多个集合的交集,并就地修改

&= 等同于intersection_update

差集

集合A和B,由所有属于A切不属于B的元素组成的元素

difference(*other) 返回和多个集合的差集

– 等同于difference

difference_update(*other)  获取和多个集合的差集并就地修改

-= 等同于difference_update

对称差集

集合A和B,由所有不属于A和B的交集元素组成的集合,记作(A-B) U (B-A)

symmetric_difference(other) 返回和另一个集合的差集

^ 等同于symmetric_difference

symmetric_difference_update(other) 获取和另一个集合的差集就地修改

^= 等同于symmetric_difference_update

issubset(other)、<=

判断当前集合是否是另一个集合的子集

set1 < set2

判断set1是否是set2的真子集

issuperset(other)、>=

判断当前集合是否是other的超集

set1 > set2

判断set1是否是set的真超集

isdisjoint(other)

当前集合和另一个集合没有交集

没有交集、返回True

集合应用

1、共同好友

你的好友A、B、C,他的好友B、C、D,求共同好友

{“A”,”B”,”C”}.intersection({“B”,”C”,”D”})

2、微信群提醒

XXX与群里的其他人都不是微信朋友关系

并集,所有的群里的人的好友形成一个并集,userid in (A|B|C|…) ,用户id不存在这个并集中,说明他和任何人都不是朋友

3、权限判断

有一个API,要求权限同时具备A、B、C才能访问,用户权限是B、C、D,判断用户是否能访问该API

API集合A,权限集合P

A – P = {} , A-P为空集,说明P包含A

A.issubset(P) 也行,A是P的子集也行

A & P = A 也行

有一个API,要求权限具备A、B、C任意一项就可以访问,用户权限B、C、D,判断用户是否能访问该API

API集合A,权限集合P

A & P != {} 就可以

A.isdisjoint(P) == False 表示有交集

4、一个总任务列表,存储所有任务。一个完成的任务列表。找出为未完成的任务

业务中,任务ID一般不可以重复

所有已完成任务ID放到一个set中,假设为COMPLETED,它是ALL的子集

ALL – COMPLETED = UNCOMPLETED

集合练习

随机产生2组各10个数字的列表,如下要求:

每个数字取值范围[10,20]

统计20个数字中,一共有多少个不同的数字  #交集

2组之间进行比较,不重复的数字有几个?分别是什么?  #对称差集

2组之间进行比较,重复的数字有几个?分别是什么?  #并集

a = [1, 9, 7, 5, 6, 7, 8, 8, 2, 6]

b= [1, 9, 0, 5, 6, 4, 8, 3, 2, 3]

s1=set(a)

s2=set(b)print(s1) #去重

print(s2) #去重

print(s1.union(s2)) #并集 去重

print(s1.symmetric_difference(s2)) #对称差集

print(s1.intersection(s2)) #交集

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/146070.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 用vc2010怎么编译运行C语言,怎么用vc++2010学c语言程序设计?如何像vc6.0一样运行cpp文件?…「建议收藏」

    用vc2010怎么编译运行C语言,怎么用vc++2010学c语言程序设计?如何像vc6.0一样运行cpp文件?…「建议收藏」我简单做了一下,基本实现你要的功能,事件响应代码在下面得到路径之后,然后对文件进行文件内容的读取,读取到一个缓冲区内,然后用setwindowtext函数将内容显示在下面的空间上即可voidctest2dlg::onbutton1(){//todo:addyourcontrolnotificationhandlercodeherecstringstrpath;/…

  • 中国历年人口出生数1983至2020岁_中国历年出生人口数据

    中国历年人口出生数1983至2020岁_中国历年出生人口数据1983年:2052万1984年:2050万1985年:2196万1986年:2374万1987年:2508万1988年:2445万1989年:2396万1990年:2374万1991年:2250万1992年:2113万1993年:2120万1994年:2098万1995年:2052万1996年:2057万1997年:2028万1998年:1934万1999年:1827万2000年:1765万2001年:1696万2002年:1641万2003年:1594万200.

  • 完结撒花!吴恩达DeepLearning.ai《深度学习》课程笔记目录总集

    完结撒花!吴恩达DeepLearning.ai《深度学习》课程笔记目录总集吴恩达CourseraDeepLearning.ai《深度学习》系列课程笔记目录总集

  • ipset如何与netfilter内核模块进行通信

    ipset如何与netfilter内核模块进行通信最近需要使用ipset,iptables,和netfilter,所以把三者的源代码看大概阅读了一遍。前面我们学习过应用层ipset和netfilter模块之间通信是采用的netlink套接字用户空间的ipset命令通过libipset.so这个库和内核通讯一、ipset主流程下面是我总结的主流程 二、用户层如何将创建set的名称和类型传递到内核层的我们都知道ip…

  • Java基础入门笔记06——String类和StringBuffer类,Java中的三大集合,Set集合,List集合,Map集合,Collection类

    Java基础入门笔记06——String类和StringBuffer类,Java中的三大集合,Set集合,List集合,Map集合,Collection类常用类String类和StringBuffer类String类不能改变串对象中的内容,每次操作后都产生一个新串StringBuffer类可以实现字符串动态改变,对原对象增删改查equals()和”==”的区别equals()仅判断值是否相等“==”判断值还要判断引用是否相等length():获取字符串的字符个数length:获取数组长度toCharArray():将字符串对象转换为字符数组Java的三种集合都是接口,需要具体实现集合类存在于java.util包中,是一个用来存放

  • Redis雪崩_redis落地方式

    Redis雪崩_redis落地方式同一时间大面积失效,那一瞬间Redis跟没有一样,那这个数量级别的请求直接打到数据库几乎是灾难性的,如果打挂的是一个用户服务的库,那其他依赖他的库所有的接口几乎都会报错,如果没做熔断等策略基本上就是瞬间挂一片的节奏,怎么重启用户都会把你打挂,等你能重启的时候,用户早就睡觉去了,并且对产品失去了信心,什么垃圾产品。设置两个缓存,原始缓存和备用缓存,原始缓存失效时,访问备用缓存,备用缓存失效时间设置长点。设置缓存过期时间时加上一个随机值,避免缓存在同一时间过期。雪崩概念在某一个时间段,缓存集中过期失效。…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号