集合的简介

  • 集合是一个无序、不重复的序列
  • 它的基本用法包括成员检测和消除重复元素
  • 集合对象也支持像 联合,交集,差集,对称差分等数学运算
  • 集合中所有的元素放在 {} 中间,并用逗号分开

集合的栗子

这里会有个重点知识

# 声明
basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
print(basket) set_ = {1, 1, 1, 1, 2}
print(set_) # 输出结果
{'orange', 'pear', 'banana', 'apple'}
{1, 2}

自动去重了,每个元素只保留一个,且是无序的

再来看一个栗子

set_ = {{1, }, {1, }}
print(set_) set_ = {[1, ], [2, ]}
print(set_) # 输出结果
set_ = {{1, }, {1, }}
TypeError: unhashable type: 'set' set_ = {[1, ], [2, ]}
TypeError: unhashable type: 'list'

为什么报错?

重点:因为 set 集合只能包含不可变对象元素,而列表、集合本身都是可变对象,所以会报错

集合和列表的区别

  • 列表中的元素允许重复,集合中的元素不允许重复
  • 列表是有序的,提供了索引操作,集合是无序的,没有索引操作
set_ = {1, 1, 1, 1, 2}
set[1] # 输出结果
set[1]
TypeError: 'type' object is not subscriptable

提示该类型不能下标

特殊集合

如何创建一个空集合

set_ = {}
print(set_, type(set_))


# 输出结果
{} <class 'dict'>

不可以直接 { },这样默认是一个空字典哦

正确写法

set_ = set()
print(set_, type(set_)) # 输出结果
set() <class 'set'>

常见运算操作

运算符 |

合并多个集合

>>> {1, 2} | {3, 4}
{1, 2, 3, 4}
>>> {1, 2} | {3, 4} | {5, 6}
{1, 2, 3, 4, 5, 6}

运算符 -

从集合中删除元素

>>> {1, 2, 3, 4} - {3, 4, 5, 6}
{1, 2}

运算符 &

取交集,返回两个集合都包含的元素

>>> {1, 2, 3} & {3, 4, 5}
{3}

运算符 ^

取差集

>>> {1, 2, 3} ^ {3, 4, 5}
{1, 2, 4, 5}

关键字 in

检查集合中是否包含指定元素

>>> 'polo' in {'www', 'polo', 'com'}
True
>>> 'yy' in {'www', 'yyy', 'com'}
False

常见函数

len(set)

获取集合的长度

>>> len({1, 2, 3})
3
>>> len({1, 2, 3, 4})
4

max(set)

获取集合中最大的元素

>>> max({1, 2})
2
>>> max({1, 3, 2})
3

min(set)

获取集合中最小的元素

>>> min({1, 2})
1
>>> min({1, 3, 2})
1

集合常见方法

add(item)

向集合中新增一个元素 item

# add
set_ = {1, 2, 3}
set_.add(1)
set_.add(4)
set_.add("5")
print(set_) # 输出结果
{1, 2, 3, 4, '5'}

remove(item)

从集合中删除指定元素 item

# remove
set_ = {1, 2, 3}
set_.remove(2)
print(set_) # 输出结果
{1, 3}

clear()

移除集合中的所有元素

# remove
set_ = {1, 2, 3}
print(set_)
set_.clear()
print(set_) # 输出结果
{1, 2, 3}
set()

pop()

移除集合首位元素,并返回该元素值

# pop
a = {1, 2, 3, 4}
print(a.pop())
print(a.pop())
print(a) # 输出结果
1
2
{3, 4}

difference()

从源集合中找出目标集合中没有的元素集合

# difference
a = {1, 2, 3, 4}
b = {2, 3, 5}
print(a.difference(b)) # 输出结果
{1, 4}

union()

返回两个集合的并集

# union
set1 = {1, 2, 3}
set2 = {3, 4, 5}
print(set1.union(set2)) # 输出结果
{1, 2, 3, 4, 5}

intersection()

返回两个集合的交集

# intersection
set1 = {1, 2, 3}
set2 = {3, 4, 5}
print(set1.intersection(set2)) # 输出结果
{3}

issubset()

判断指定集合是否为子集

# issubset
set1 = {1, 2}
set2 = {1, 2, 3}
print(set1.issubset(set2)) # 输出结果
True

issuperset()

判断指定集合是否为超集

# issuperset
set1 = {1, 2, 3}
set2 = {1, 2}
print(set1.issuperset(set2)) # 输出结果
True

集合总结

因为集合是不可重复的,所以可以利用它来处理一些需要避免重复插入的场景,比如为了避免某一学生的信息重复录入

Python - 基础数据类型 set 集合的更多相关文章

  1. Python基础数据类型之集合

    Python基础数据类型之集合 集合(set)是Python基本数据类型之一,它具有天生的去重能力,即集合中的元素不能重复.集合也是无序的,且集合中的元素必须是不可变类型. 一.如何创建一个集合 #1 ...

  2. Python基础数据类型之集合以及其他和深浅copy

    一.基础数据类型汇总补充 list  在循环一个列表时,最好不要删除列表中的元素,这样会使索引发生改变,从而报错(可以从后向前循环删除,这样不会改变未删元素的索引). 错误示范: lis = [,,, ...

  3. Python基础数据类型-列表(list)和元组(tuple)和集合(set)

    Python基础数据类型-列表(list)和元组(tuple)和集合(set) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本篇博客使用的是Python3.6版本,以及以后分享的 ...

  4. python基础数据类型--集合(set)

    python基础数据类型--集合(set) 集合是一个数学概念由一个或多个确定的元素所构成的整体叫做集合 集合中的三个特征 1.确定性(元素必须死可hash) 2.互异性(去重) 3.无序性(集合中的 ...

  5. 『Python基础-11』集合 (set)

    # 『Python基础-11』集合 (set) 目录: 集合的基本知识 集合的创建 访问集合里的值 向集合set增加元素 移除集合中的元素 集合set的运算 1. 集合的基本知识 集合(set)是一个 ...

  6. Python 入门之Python基础数据类型及其方法

    Python 入门之Python基础数据类型 1. 整型:int 用于计算,用于比较 (在赋值的时候先执行等号右边的内容) 1.1 整数的加 a = 10 b = 20 print(a + b) 结果 ...

  7. Python基础篇(set集合)

    Python基础篇(set集合,深浅拷贝) set集合是Python的一个基本类型,一般是不常用.set中的元素是不重复的.无序的里边 的元素必须是可hash的比如int,str,tuple,bool ...

  8. 图解python | 基础数据类型

    作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/56 本文地址:http://www.showmeai.tech/article-det ...

  9. python基本数据类型之集合

    python基本数据类型之集合 集合是一种容器,用来存放不同元素. 集合有3大特点: 集合的元素必须是不可变类型(字符串.数字.元组): 集合中的元素不能重复: 集合是无序的. 在集合中直接存入lis ...

随机推荐

  1. 微软发布了Visual Studio 2022 Preview 1 以及.NET 6 Preview 5

    Microsoft 今天宣布了Visual Studio 2022 的第一个预览版,并且同时也发布了.NET 6 Preview 5. https://devblogs.microsoft.com/v ...

  2. 【NX二次开发】调整视图大小

    调整视图大小 tag_t tagView; UF_VIEW_ask_work_view(&tagView); UF_VIEW_fit_view(tagView, 0.7);//if NULL_ ...

  3. 关于kubernetes的十七个实验(一)

    实验综述 Kubernetes用来管理云平台上的容器化应用,这里从 https://www.katacoda.com/courses/kubernetes 学习Kubernetes的使用,对Kuber ...

  4. 『心善渊』Selenium3.0基础 — 6、Selenium中使用XPath定位元素

    目录 1.Selenium中使用XPath查找元素 (1)XPath通过id,name,class属性定位 (2)XPath通过标签中的其他属性定位 (3)XPath层级定位 (4)XPath索引定位 ...

  5. 每日三道面试题,通往自由的道路5——JVM

    茫茫人海千千万万,感谢这一秒你看到这里.希望我的面试题系列能对你的有所帮助!共勉! 愿你在未来的日子,保持热爱,奔赴山海! 每日三道面试题,成就更好自我 昨天既然我们聊到了JVM,那我们继续这一个话题 ...

  6. 『心善渊』Selenium3.0基础 — 8、使用CSS选择器定位元素

    目录 1.CSS选择器介绍 2.CSS选择器定位语法 3.Selenium中使用CSS选择器定位元素 (1)通过属性定位元素 (2)通过标签定位元素 (3)通过层级关系定位元素 (4)通过索引定位元素 ...

  7. DNS 解析过程

    DNS 是应用层协议,用于将域名转换成 IP 地址. 1. 解析过程 DNS 的核心系统是一个三层的树状.分布式服务,基本对应域名的结构. 根域名服务器:管理顶级域名服务器,返回 com.net.cn ...

  8. 使用jsonp实现跨源请求

    jsonp 该技术用来实现跨源请求,即向协议.域名.端口号不同的服务器发送请求 通过使用 script 标签的 src 向服务器发送GET请求http://xxx/xxx?callback=callb ...

  9. 最强阿里巴巴历年经典面试题汇总:C++研发岗

    (1).B树.存储模型 (2).字典树构造及其优化与应用 (3).持久化数据结构,序列化与反序列化时机(4).在无序数组中找最大的K个数? (4).大规模文本文件,全是单词,求前10词频的单词 (5) ...

  10. 23、mysql高可用实践

    23.1.mysql高可用业务需求: 23.2.mysql高可用架构图(单主热备模式): 23.6.部署drbd.heartbeat.mysql的主从同步: 1.部署heartbeat:参考" ...