热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Python集合(set)介绍

集合set集合是可变的容器集合内的数据对象都是唯一的(不能重复多次的)集合是无序的存储结构,集合中的数据没有先后关系集合内的元素必须是不可

集合 set

集合是可变的容器

集合内的数据对象都是唯一的(不能重复多次的)

集合是无序的存储结构,集合中的数据没有先后关系

集合内的元素必须是不可变对象

集合是可迭代对象(可以用for等遍历)

集合是相当于只有键,没有值的字典(键则是集合的数据)

创建空集合:

set()

创建非空集合的字面值:

s = {1,2,3}

集合的构造函数:set

set() # 创建一个空的集合对象(不能用{}来创建空集合)
set(iterable) # 用可迭代对象创建一个新的集合对角

# 示例:
s = set()
s = {1,2,3,4}
s = set("ABC")
s = set("ABCABC") # s = {"A","B","C"}
s = set([1,0,3.14,0.618])
s = {1,2,[3,4],5} #报错,集合内不能放列表和字典
s = {1,2,{3,4},5} #出错集合是可变对象

集合的运算:

交集&&#xff0c;并集|&#xff0c;补集-&#xff0c;对称补集^ , 子集<,超集>

# & 运算符生成两个集合的交集(两个集合的共同部分)
s1 &#61; {1,2,3}
s2
&#61; {2,3,4}
s3
&#61; s1 & s2 #s3&#61;{2,3} # | 生成两个集合的并集
s1 &#61; {1,2,3}
s2
&#61; {2,3,4}
s3
&#61; s1 | s2 #s3 &#61;{1,2,3,4}# - 生成两个集合的补集
s1 &#61; {1,2,3}
s2
&#61; {2,3,4}
s3
&#61; s1 - s2 #生成属于s1&#xff0c;但不属于s2的所有元素的集合# ^ 生成两个集合的对称补集
s1 &#61; {1,2,3}
s2
&#61; {2,3,4}
s3
&#61; s1 ^ s2 #s3 &#61;{1,4} # > 判断一个集合是另一个集合的超集
#
<判断一个集合是另一个集合的子集
s1 &#61; {1,2,3}
s2
&#61; {2,3}
s1
> 2s # True, s1为s2的超集
s2 # True&#xff0c;s2为s1的子集# &#61;&#61; !&#61; 集合相同或不同
s1 &#61; {1,2,3}
s2
&#61; {2,3,1}
s1
&#61;&#61; s2 #True 相同
s1 !&#61; s1 #False # >&#61; <&#61; 超集或相同&#xff0c;子集或相同

练习

# 1.经理有&#xff1a;曹操&#xff0c;刘备&#xff0c;孙权
#
技术员有&#xff1a;曹操&#xff0c;孙权&#xff0c;张飞&#xff0c; 关羽
#
用集合求&#xff1a;
#
1. 即是经理也是技术员的有谁&#xff1f;
#
2. 是经理&#xff0c;但不是技术人员的都有谁&#xff1f;
#
3. 是技术人员&#xff0c;但不是经理的人都有谁&#xff1f;
#
4. 张飞是经理吗&#xff1f;
#
5. 身兼一职的人都有谁&#xff1f;
#
6. 经理和技术人员共有几个人&#xff1f;
l &#61; {"曹操","刘备","孙权"}
j
&#61; {"曹操","孙权","张飞","关羽"}
print("即经理也是技术员的有:",l&j,)
print("是经理&#xff0c;但不是技术人员的有",l-j)
print("是技术人员&#xff0c;但不是经理的有",j-l)
if "张飞" in l:
  print("是经理")
else:
  print("张飞&#xff0c;不是经理")
print("身兼一职的人&#xff1a;",l^j)
print("经理和技术人员共有",len(l|j))

集合的方法&#xff1a;

# 方法      # 意义
S.add(e)        # 在集合中添加一个新的元素e&#xff1b;如果元素已经存在&#xff0c;则不添加
S.remove(e)        # 从集合中删除一个元素&#xff0c;如果元素不存在于集合中&#xff0c;则会产生一个KeyError错误
S.discard(e)         # 从集合S中移除一个元素e,在元素e不存在时什么都不做;
S.clear()       # 清空集合内的所有元素
S.copy()        # 将集合进行一次浅拷贝
S.pop()        # 从集合S中删除一个随机元素;如果此集合为空&#xff0c;则引发KeyError异常
S.update(s2)        # 等同于 S l&#61; s2, 用 S与s2得到的全集更新变量S
S.difference(s2)        # S - s2 补集运算&#xff0c;返回存在于在S中&#xff0c;但不在s2中的所有元素的集合
S.difference_update(s2)     # 等同于 S -&#61; s2
S.intersection(s2)         # 等同于 S & s2
S.intersection_update(s2)       # 等同于S &&#61; s2
S.isdisjoint(s2)            # 如果S与s2交集为空返回True,非空则返回False
S.issubset(s2)             # 如果S与s2交集为非空返回True,空则返回False
S.issuperset(...)             # 如果S为s2的超集返回True,否则返回False
S.symmetric_difference(s2)      # 返回对称补集, 等同于 S ^ s2
S.symmetric_difference_update(s2) # 等同于 S ^&#61; s2, 用 S 与 s2 的对称补集更新 S
S.union(s2)           # 生成 S 与 s2的全集, 等同于 S \
# 集合是可迭代对象

集合推导式

集合推导式是用可迭代对象创建集合的表达式

# 语法&#xff1a;
#
{表达式 for 变量 in 可迭代对象 [if 真值表达式]}
#
示例&#xff1a;
#
s &#61; {x**2 for x in range(1,10)}
#
集合推导式可以嵌套
#
语法用列表推导式的嵌套相同

固定集合 frozenset&#xff08;原封集合&#xff09;

固定集合是不可变的&#xff0c;无序的&#xff0c;含有唯一元组的集合

# 作用&#xff1a;
#
固定集合可以作为字典的键&#xff0c;还可以作为集合的值&#xff08;可以放固定键&#xff09;
#
创建固定集合构造函数 frozenset
frozenset&#xff08;&#xff09;# 创建一个空的固定集合对象
frozenset&#xff08;iterable&#xff09;# 用可迭代对象创建一个新的固定集合对象fz
&#61; frozenset&#xff08;&#xff09;
fz
&#61; frozenset (range(10))
fz
&#61; frozenset ([1,3,8,6,9])
d
&#61; {frozenset({1,2,3}):"集合1,2,3"}

固定集合的运算&#xff1a;

# &交集 | 并集 -补集 ^对称补集 <子集 >超集
#
<&#61; >&#61; &#61;&#61; !&#61;
#
in / not in
#
(以上运算规则等用于set中的规则)

固定集合的方法&#xff1a;

相当于集合的全部方法去掉修改集合的方法

python基础总结

阶段总结

# 数据类型&#xff1a;
#
不可变类型&#xff1a;
#
数字&#xff1a;bool&#xff0c;int&#xff0c;float&#xff0c;complex&#xff08;复数&#xff09;
#
容器&#xff1a;str&#xff0c;tulpe&#xff0c;frozenset&#xff0c;bytes&#xff08;备留&#xff09;
#
可变类型
#
list&#xff0c;dict&#xff0c;set&#xff0c;bytearray&#xff08;备留&#xff09;
#
值&#xff1a;
#
None&#xff0c;False&#xff0c;True

# 表达式&#xff1a;
#
1 1 &#43;1
#
print("hello")
#
max("ABC")&#43;min("123")
#
条件表达式&#xff1a;x if x > y else y # 全部的推导式&#xff1a;
#
列表&#xff0c;字典&#xff0c;集合推导式# 语句&#xff1a;
#
表达式语句&#xff1a;
#
print("hello")
#
"""ABCD""""# 赋值语句&#xff1a;
#
a &#61; 100
#
a &#61; b &#61; c &#61; 200
#
x&#xff0c;y &#61; 100,200
#
L[1] &#61; 200
#
d["key"] &#61; "键"# del语句&#xff08;删除&#xff09;
#
if 语句&#xff08;如果&#xff09;elif else:
#
while语句(循环)
#
for 语句&#xff08;固定循环&#xff09;
#
break语句&#xff08;结束循环&#xff09;
#
continue语句&#xff08;重新执行循环&#xff09;
#
pass语句

内建函数

# 容器相关
len&#xff08;x&#xff09;&#xff0c;max&#xff08;x&#xff09;&#xff0c;min&#xff08;x&#xff09;&#xff0c;sum&#xff08;x&#xff09;&#xff0c;any&#xff08;x&#xff09;&#xff0c;all&#xff08;x&#xff09;# 构造函数&#xff1a;
bool(x) int(x) float(x) complex(r&#61;0.0,i &#61; 0.0)
str(x) list(x) tuple(x) dict(x) set(x) frozenset(x)
# 数值型 函数:
abs(x) round(x) pow(x,y,z&#61;None) 幂运算# 字符串相关
bin(x) oct&#xff08;x&#xff09; hex&#xff08;x&#xff09; chr&#xff08;x&#xff09; 数字 ord&#xff08;x&#xff09; 编码# 可迭代对象相关
range&#xff08;start,stop,step&#xff09; reversed(x) sorted(x,reverse&#61;False)# 输入输出相关&#xff1a;
input(x) print(...)# 其它&#xff1a;
type&#xff08;x&#xff09; id&#xff08;x&#xff09;


转载于:https://www.cnblogs.com/Axianba/p/11133327.html


推荐阅读
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • 本文介绍了九度OnlineJudge中的1002题目“Grading”的解决方法。该题目要求设计一个公平的评分过程,将每个考题分配给3个独立的专家,如果他们的评分不一致,则需要请一位裁判做出最终决定。文章详细描述了评分规则,并给出了解决该问题的程序。 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • 如何自行分析定位SAP BSP错误
    The“BSPtag”Imentionedintheblogtitlemeansforexamplethetagchtmlb:configCelleratorbelowwhichi ... [详细]
  • 目录实现效果:实现环境实现方法一:基本思路主要代码JavaScript代码总结方法二主要代码总结方法三基本思路主要代码JavaScriptHTML总结实 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • 推荐系统遇上深度学习(十七)详解推荐系统中的常用评测指标
    原创:石晓文小小挖掘机2018-06-18笔者是一个痴迷于挖掘数据中的价值的学习人,希望在平日的工作学习中,挖掘数据的价值, ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 不同优化算法的比较分析及实验验证
    本文介绍了神经网络优化中常用的优化方法,包括学习率调整和梯度估计修正,并通过实验验证了不同优化算法的效果。实验结果表明,Adam算法在综合考虑学习率调整和梯度估计修正方面表现较好。该研究对于优化神经网络的训练过程具有指导意义。 ... [详细]
  • Day2列表、字典、集合操作详解
    本文详细介绍了列表、字典、集合的操作方法,包括定义列表、访问列表元素、字符串操作、字典操作、集合操作、文件操作、字符编码与转码等内容。内容详实,适合初学者参考。 ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • 模板引擎StringTemplate的使用方法和特点
    本文介绍了模板引擎StringTemplate的使用方法和特点,包括强制Model和View的分离、Lazy-Evaluation、Recursive enable等。同时,还介绍了StringTemplate语法中的属性和普通字符的使用方法,并提供了向模板填充属性的示例代码。 ... [详细]
author-avatar
手机用户2502936007
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有