1.概念

(1)不同元素组成

例:

s = {1,2,3,4,4,4,4,4,4}
print(s)
运行结果:
{1, 2, 3, 4}
因为是不同元素组成,因此去重了

(2)无序

例:

s = {"xiao","xing","ceshi","admin"}
print(s)
运行结果每次显示的顺序不一样,代表是无序的

(3)集合元素必须是不可变类型

例:

s = {[123,456],789}
print(s)
运行结果:
TypeError: unhashable type: 'list'
因为列表是可变,所以会报错

2.集合的方法

1.add   添加
s = {123,456,789}
s.add(2)
print(s)
运行结果:
{456, 2, 123, 789}

2.clear 清空
s = {123,456,789}
s.clear()
print(s)
运行结果:
set()

3.copy 复制
s = {123,456,789}
s1 = s.copy()
print(s1)
运行结果:
{123,456,789}

4.pop 删除(无序删除,随机删除,不可指定删除)
s = {123,456,789}
s.pop()
print(s)
运行结果:
{123, 789}

5.remove 删除(可指定删除,元素不存在时会报错)
s = {123,456,789}
s.remove(789)
print(s)
运行结果:
{456, 123}
6.discard  删除(可指定删除,元素不存在时不会报错)

3.集合的关系运算,交,差并集操作

(1)求交集(需求在列表中找出既学python又学linux的人)

python_1 = ["xiao","xing","ly"]
linux_1 = ["ly","xing"]
python_and_linux =[]
for p_name in python_1:
if p_name in linux_1:
python_and_linux.append(p_name)
print(python_and_linux)
运行结果:
['xing', 'ly']

学过集合后的操作
python_1 = ["xiao","xing","ly"]
linux_1 = ["ly","xing"]
p_s =set(python_1)
#set函数相当于,for循环遍历python_1这个列表,然后把列表中的元素依次放到集合当中,如果是重复就去除,最终生成p_s集合是无序的
l_s = set(linux_1)
print(p_s,l_s)
print(p_s.intersection(l_s))
print(p_s&l_s)
运行结果:

{'xing', 'xiao', 'ly'} {'xing', 'ly'}
{'xing', 'ly'}
{'xing', 'ly'}

(2)求并集

python_1 = ["xiao","xing","ly"]
linux_1 = ["ly","xing","zx"]
print(p_s.union(l_s))
或者
print(p_s|l_s)
运行结果:
{'zx', 'ly', 'xing', 'xiao'}

(3)求差集

python_1 = ["xiao","xing","ly"]
linux_1 = ["ly","xing","zx"]
print(p_s.difference(l_s))
或者
print('差集',p_s-l_s)
运行结果:

{'xiao'}
   差集 {'xiao'}

(4)求交叉补集

python_1 = ["xiao","xing","ly"]
linux_1 = ["ly","xing","zx"]
print(p_s.symmetric_difference(l_s))
运行结果:
{'xiao', 'zx'}

(5)求完叉集再赋值给原来的值

difference_update
python_1 = ["xiao","xing","ly"]
linux_1 = ["ly","xing","zx"]
p_s =set(python_1)
l_s = set(linux_1)
#p_s = p_s - l_s
#print(p_s)
p_s.difference_update(l_s)
print(p_s)
运行结果:
{'xiao'}
difference_update先求差集,再将差集赋值给p_s

(6)判断两个集合是否有交集,无则返回true

s = {1,2,3}
s1 = {4,5}
print(s.isdisjoint(s1))
运行结果:
True

(7)判断是否为其子集

s1 = {1,2}
s2 = {1,2,3}
print(s1.issubset(s2))
运行结果:
true

(8)判断是否为其父集

s1 = {1,2}
s2 = {1,2,3}
print(s2.issuperset(s1))
运行结果:
true

(9)更新多个值

s1 = {1,2}
s2 = {1,2,3}
s1.update(s2)
print(s1)
运行结果:
{1, 2, 3}

(10)定义不可变集合

s = frozenset('hello')
print(s)
运行结果:
frozenset({'h', 'o', 'e', 'l'})
再s.的时候发现无法添加,修改,删除操作

(4)求完叉集再赋值给原来的值

最新文章

  1. JS 获取CSS属性值
  2. 用DataGridView导入TXT文件,并导出为XLS文件
  3. javascript每天一题
  4. 布局容器layout Container
  5. cookie,session原理,以及如何使用chrome查看。
  6. Intelij IDEA 2016.3安装mybatis插件并激活教程
  7. Centos 检查磁盘读写性能
  8. matlab示例程序--Motion-Based Multiple Object Tracking--卡尔曼多目标跟踪程序--解读
  9. php学习笔记:对文件的增删查改等操作
  10. 2013 Asia Hangzhou Regional Contest
  11. [HIve - LanguageManual] LateralView
  12. Android之adb
  13. 自定义jquery插件
  14. 探秘IntelliJ IDEA 13测试版新功能——调试器显示本地变量
  15. MariaDB的安装与启动
  16. C#调用存储过程执行缓慢,但在数据库中执行却很快的问题
  17. Java中Access restriction:····的解决方法
  18. html的基本语法
  19. pip常用记录
  20. mysql存储过程造数

热门文章

  1. libzip开发笔记(一):libzip库介绍、编译和工程模板
  2. Java学习日报7.18
  3. JS中var与let的区别
  4. 基于jupyter lab搭建网页编程环境并添加自定义python kernel和matlab kernel以及plotly的使用
  5. 为什么Elasticsearch不适合做数据存储?(转学习使用)
  6. 孟德尔随机化(Mendelian Randomization) 统计功效(power)和样本量计算
  7. 转 linux终端 字符界面 显示乱码 .
  8. Sentry(v20.12.1) K8S 云原生架构探索,SENTRY FOR JAVASCRIPT SDK 配置详解
  9. vue-vite浅析
  10. python使用msgpack(umsgpack)