集合

简介: 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} 集合是无序的,去重的。

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']
目录
相关文章
|
9月前
|
JSON 安全 Java
什么是JWT?如何使用Spring Boot Security实现它?
什么是JWT?如何使用Spring Boot Security实现它?
1727 5
|
8月前
|
人工智能 分布式计算 DataWorks
大数据& AI 产品月刊【2024年12月】
大数据& AI 产品技术月刊【2024年12月】,涵盖本月技术速递、产品和功能发布、市场和客户应用实践等内容,帮助您快速了解阿里云大数据& AI 方面最新动态。
|
负载均衡 安全 Java
【微服务系列笔记】Gateway
Gateway是Spring Cloud生态系统中的网关服务,作为微服务架构的入口,提供路由、负载均衡、限流、鉴权等功能。借助于过滤器和路由器,Gateway能够动态地管理请求流量,保障系统的安全和性能。
1163 7
|
存储 负载均衡 NoSQL
【Redis系列笔记】Redis集群
集群是一种在多个计算机或服务器之间分配和管理任务的方式。它们被广泛应用于大型计算任务、数据处理、网络服务和高性能计算等领域。在Redis中,主要有以下三种集群,分别是主从集群,哨兵集群,分片集群。
386 18
|
11月前
|
测试技术 C# 数据库
C# 一分钟浅谈:测试驱动开发 (TDD) 实践
【10月更文挑战第18天】测试驱动开发(TDD)是一种软件开发方法论,强调先编写测试代码再编写功能代码,以确保代码质量和可维护性。本文从 TDD 的基本概念入手,详细介绍了其核心步骤——编写测试、运行测试并失败、编写代码使测试通过,以及“红绿重构”循环。文章还探讨了 TDD 的优势,包括提高代码质量、促进设计思考、减少调试时间和文档化。此外,文中分析了常见问题及解决方案,如测试覆盖率不足、测试代码过于复杂、忽视重构和测试依赖过多,并通过一个简单的计算器类的代码案例,展示了 TDD 的实际应用过程。
187 1
|
负载均衡 算法 应用服务中间件
【微服务系列笔记】负载均衡
本文介绍了负载均衡的概念和重要性,指出随着流量增长,通过垂直扩展和水平扩展来提升系统性能,其中水平扩展引入了负载均衡的需求。负载均衡的目标是将流量分布到多台服务器以提高响应速度和可用性,常见的硬件和软件负载均衡器包括F5、A10、Nginx、HAProxy和LVS等。 文章接着提到了Ribbon,这是一个客户端实现的负载均衡器,用于Spring Cloud中。Ribbon在发起REST请求时进行拦截,根据预设的负载均衡算法(如随机算法)选择服务器,并重构请求URI。文中还介绍了如何通过代码和配置文件两种方式自定义Ribbon的负载均衡策略。
792 3
|
监控 算法 Java
|
前端开发 UED
垂直导航栏不再单调!教你用CSS动画打造炫酷特效
垂直导航栏不再单调!教你用CSS动画打造炫酷特效
|
11月前
|
C语言 C++
实现两个变量值的互换[C语言和C++的区别]
实现两个变量值的互换[C语言和C++的区别]
131 0
|
缓存 网络安全 Nacos
登录nacos客户端提示no message available
登录nacos客户端提示no message available