当前位置: 首页 > news >正文

Python基础-数据类型之集合

一、集合的定义

集合:是一个无序的没有重复元素的序列,因此不能通过索引来进行操作

1:使用set()创建集合

set(object)   # 参数为一个序列,整型不能作为参数

set_a = set("abcb")
print(set_a)  # {'b', 'a', 'c'}

2:使用{}直接定义

set_a = {'a', 'b', 'c'}
print(type(set_a), set_a)  # <class 'set'> {'b', 'c', 'a'}

注意:创建一个空集合必须使用set(),而不是{},因为{}是用来创建一个空字典的

set_a = set()
print(type(set_a), set_a)  # <class 'set'> set()b = {}
print(type(b), b)  # <class 'dict'> {}

二、集合的使用

1:添加元素add():重复添加无效

set.add(x)     # x为要添加的元素

返回值为:None,修改了原集合

set_a = set("abc")
print(set_a)    # {'c', 'a', 'b'}
# 元素不存在
set_a.add("d")
print(set_a)    # {'c', 'a', 'b', 'd'}
# 元素已存在
set_a.add('c')
print(set_a)    # {'c', 'a', 'b', 'd'}

2:添加多个元素update():把传入的元素拆分,作为个体加入到集合中

set.update()

返回值为:None,修改了原集合

set_a = set("abc")
print(set_a)   # {'c', 'b', 'a'}
result = set_a.update("defdab")
print(result)  # None
print(set_a)   # {'d', 'f', 'e', 'b', 'c', 'a'}
set_a = set("abc")
print(set_a)   # {'a', 'b', 'c'}
result = set_a.update(['a','g','r',1,2])
print(result)  # None
print(set_a)   # {1, 2, 'a', 'r', 'g', 'c', 'b'}

3:删除元素remove()

set.remove(x)    # x为要删除的元素

返回值为:None,删除的元素不存在,会报错,修改了元集合

set_a = set("abc")
print(set_a)    # {'b', 'c', 'a'}
result = set_a.remove('a')
print(result)   # None
print(set_a)    # {'b', 'c'}
result = set_a.remove('d')   # 报错,KeyError: 'd'

4:删除元素discard()

set.discard(x)    # x为要删除的元素

返回值为:None,删除的元素不存在,不会报错,修改了元集合

set_a = set("abc")
print(set_a)    # {'c', 'b', 'a'}
# 删除的元素存在
result = set_a.discard('a')
print(result)   # None
print(set_a)    # {'c', 'b'}
# 删除的元素不存在
result = set_a.discard('d')
print(result)   # None
print(set_a)    # {'c', 'b'}

5:删除元素pop():随机删除一个元素

set.pop()

返回值为:被删除的元素,修改了元集合

set_a = set("abc")
print(set_a)   # {'c', 'a', 'b'}
result = set_a.pop()
print(result)  # c
print(set_a)   # {'a', 'b'}

6:统计集合的元素个数len()

len(set)

返回值为:集合的元素个数

set_a = {'a', 'b', 'c'}
result = len(set_a)
print(result)    # 3

7:清空集合clear()

set.clear()

返回值为:None,修改了原集合

set_a = {'a', 'b', 'c'}
result = set_a.clear()
print(result)   # None
print(set_a)    # set()

8:判断元素是否在集合中,使用成员运算符(in  /  not in)

set_a = {'a', 'b', 'c'}
print('a' in set_a)     # True
print('a' not in set_a)  # False

9:isdisjoint():判断两个集合是否包含相同的元素

set.isdisjoint(set1)     # set1必填

返回值为:返回布尔值,包含相同的元素返回False,不包含相同的元素,返回True

set_a = {'a', 'b', 'c'}
set_b = {'a', 'd', 'f'}
# set_a与set_b中是否有相同的元素
result = set_a.isdisjoint(set_b)
print(result)    # False

10:issubset() :判断集合中的所有元素是否都包含在指定的集合中

set.issubset(set1)    # set中的所有元素是否都包含在set1中

# set1:必填 

返回值为:布尔值,如果都包含返回True,否则返回False

set_a = {'a', 'b', 'c'}
set_b = {'a', 'd', 'f', 'b', 'g', 'c'}
# set_a中的所有元素是否都包含在set_b中
result = set_a.issubset(set_b)
print(result)    # True

11:issuperset() :判断指定集合的所有元素是否都包含在原始的集合中

set.issuperset(set1)       # set1中的所有元素是否都包含在set中

# set1:必填

返回值为:布尔值,如果都包含返回True,否则返回False

set_a = {'a', 'b', 'c'}
set_b = {'a', 'd', 'f', 'b', 'g', 'c'}
# set_b中的所有元素是否都包含在set_a中
result = set_a.issuperset(set_b)
print(result)   # False

三、集合的操作符

1:求差集,集合元素包含在第一个集合中,但不包含在第二个集合

1.1:使用“-”操作符

set_a = {'a', 'b', 'c'}
set_b = {'a', 'd', 'f'}
# set_a中有的元素,在set_b中没有
result = set_a - set_b
print(result)   # {'c', 'b'}

1.2:使用difference()方法

set1.difference(set2)    # set1中有的元素,set2中没有

返回值为:一个新的集合,不修改原集合

set_a = {'a', 'b', 'c'}
set_b = {'a', 'd', 'f'}
# set_a中有的元素,在set_b中没有
result = set_a.difference(set_b)
print(result)   # {'c', 'b'}

1.3:使用difference_update()方法

set1.difference_update()(set2)    # set1中有的元素,set2中没有

返回值为:一个新的集合,修改了原集合set1

difference_update() 方法与 difference() 方法的区别在于 difference() 方法返回一个移除相同元素的新集合,而 difference_update() 方法是直接在原来的集合中移除元素,没有返回值。

set_a = {'a', 'b', 'c'}
set_b = {'a', 'd', 'f'}
# set_a中有的元素,在set_b中没有
result = set_a.difference_update(set_b)
print(result)   # None
print(set_a)    # {'c', 'b'}

2:求交集,集合元素包含在第一个集合中,同时包含在第二个集合

2.1:使用“&”操作符

set_a = {'a', 'b', 'c'}
set_b = {'a', 'd', 'f'}
# # set_a中有的元素,在set_b中也有
result = set_a & set_b
print(result)  # {'a'}

2.2:使用intersection() 方法

set.intersection(set1, set2...)  

# set中有的元素,在set1,set2中也有

# set1:必填

# set2:选填

返回值为:一个新的集合,不修改原集合

set_a = {'a', 'b', 'c'}
set_b = {'a', 'd', 'f'}
# set_a中有的元素,在set_b中也有
result = set_a.intersection(set_b)
print(result)   # {'a'}

2.3:使用intersection_update() 方法

set.intersection_update(set1, set2 ... )   

# set中有的元素,在set1,set2中也有

# set1:必填

# set2:选填

返回值为:None,修改了原集合set

intersection_update() 方法不同于 intersection() 方法,因为 intersection() 方法是返回一个新的集合,而 intersection_update() 方法是在原始的集合上移除不重叠的元素。

set_a = {'a', 'b', 'c'}
set_b = {'a', 'd', 'f'}
# set_a中有的元素,在set_b中也有
result = set_a.intersection_update(set_b)
print(result)   # None
print(set_a)    # {'a'}

3:求并集(合集),所有集合中的所有元素

3.1:使用“|”操作符

set_a = {'a', 'b', 'c'}
set_b = {'a', 'd', 'f'}
# set_a、set_b中所有的元素
result = set_a | set_b
print(result)   # {'c', 'd', 'b', 'f', 'a'}

3.2:使用union() 方法

set.union(set1,set2...) 

# set,set1,set2等集合中的所有元素

# set1:必填

# set2:选填

返回值为:所有元素组成的一个新的集合,不修改原集合set

set_a = {'a', 'b', 'c'}
set_b = {'a', 'd', 'f'}
# set_a、set_b中所有的元素
result = set_a.union(set_b)
print(result)   # {'b', 'd', 'f', 'a', 'c'}
http://www.lryc.cn/news/15035.html

相关文章:

  • [Css]Grid属性简单陈列(适合开发时有基础的快速过一眼)
  • 100种思维模型之启发式偏差思维模型-017
  • 微服务 feign远程调用时 显示服务不可用 timed-out and no fallback
  • 第一个Java程序(初识Java)
  • vulnhub LordOfTheRoot_1.0.1
  • MutationObserver与IntersectionObserver
  • 【ESP 保姆级教程】玩转巴法云篇② ——MQTT设备云,MQTT协议下的数据通信
  • 植物大战 仿函数——C++
  • 【C语言】浮点型数据在内存中的存储
  • impala中的刷新元数据和刷新表
  • Vscode创建vue项目的详细步骤
  • 如何在面试中介绍自己的项目,才能让软件测试面试官无可挑剔,
  • 虹科方案|从 uCPE 到成熟的边缘计算平台
  • 计算机是怎么读懂C语言的?
  • hadoop入门介绍及各组件功能运行关系
  • (HP)新手引导使用react-shepherd
  • 数据结构:栈和队列(Leetcode20. 有效的括号+225. 用队列实现栈+232. 用栈实现队列)
  • 22.2.19周赛双周赛(贪心、记忆化搜索...)
  • 2023最新软件测试面试题(带答案)
  • 【C++】类型转换方法
  • 100亿级订单怎么调度,来一个大厂的极品方案
  • C++性能白皮书
  • 华为OD机试 - 黑板上色 | 机试题算法思路 【2023】
  • 如何在六秒内吸引观众的注意力
  • FreeRTOS与UCOSIII任务状态对比
  • 小程序 npm sill idealTree buildDeps 安装一直没反应
  • GPT系列详解:初代GPT
  • 为什么要使用数据库
  • 【单目标优化算法】海鸥优化算法(Matlab代码实现)
  • 筑基六层 —— 整型提升及实用调式技巧