目录
- 一.set 集合简介
- 二.set 集合常用函数
- 三.set 集合运算符
- 四.猜你喜欢
零基础 Python 学习路线推荐 : Python 学习目录 >> Python 基础入门
在 Python 变量中除了以前文章所提到的整形 int / 浮点数 float / 布尔值 bool / 列表 list / 字典 dict 之外,还有一个类型我们还没有做详细介绍,这个变量类型就是集合 set。
一.set 集合简介
Python set 集合使用大括号 { } 表示,与字典 dict 不同的是 set 集合并没有 key / value 键值对,主要有以下两个特点:
- 1.元素不允许重复;
- 2.set 不记录元素的添加顺序,即是无序的,和字典类似;
# !usr/bin/env python
# -_- coding:utf-8 \\__-
\"\"\"
@Author:猿说编程
@Blog(个人博客地址): www.codersrc.com
@File:Python set 集合.py
@Time:2021/04/04 11:00
@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
\"\"\"
# 创建一个空集合 set
set_a = set()
# 打印集合 set
print(set_a)
# 查看类型
print(type(set_a))
print(\"*\\*\\*\"*20)
# 创建一个集合
set_b = {\"猿说 python\",False}
print(type(set_b))
print(set_b)
print(\"*\\*\\*\"*20)
# 创建一个字典
dict_b = {\"name\":\"猿说 python\",\"url\":\"www.codersrc.com\"}
print(type(dict_b))
print(dict_b)
\'\'\'
输出结果:
set()
<class \'set\'>
***
<class \'set\'>
{False, \'猿说 python\'}
***
<class \'dict\'>
{\'name\': \'猿说 python\', \'url\': \'www.codersrc.com\'}
\'\'\'
代码分析:观察上面代码,虽然字典 dict 和 集合 set 都是由 {} 构成,注意字典由键值对 key / value 构成,而集合确是由一个一个数据构成,和列表 list 的元素类似!
二.set 集合常用函数
- add — 向 set 集合中添加元素;
- remove — 删除元素,如果集合中不包含被删除的元素,remove() 方法会报出 KeyError 异常;
- discard — 删除元素,如果集合中不包含被删除的元素,不会有任何提示或者 异常;
- clear — 就是清空白 set 集合;
- copy — 拷贝一个集合;
- **difference **— 返回多个集合的差集;
- difference_update — 移除集合中的元素,该元素在指定的集合也存在;
- intersection — 返回集合的交集,不改变集合本身,而是返回两个集合的交集;
- intersection_update — 返回集合的交集,会通过交集运算改变第一个集合;
- isdisjoint — 判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False;
- issubset — 判断指定集合是否为该方法参数集合的子集;
- issuperset — 判断该方法的参数集合是否为指定集合的子集;
- pop — 随机移除元素;
- symmetric_difference — 移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中;
- union — 返回两个集合的并集;
- update — 用于修改当前集合,可以添加新的元素或集合到当前集合中,如果添加的元素在集合中已存在,则该元素只会出现一次,重复的会忽略;
# !usr/bin/env python
# -_- coding:utf-8 \\__-
\"\"\"
@Author:猿说编程
@Blog(个人博客地址): www.codersrc.com
@File:Python set 集合.py
@Time:2021/04/04 11:00
@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
\"\"\"
# 使用花括号构建 set 集合
c = {\'乔峰\',\"段誉\",\"虚竹\",\"天龙八部\",\"射雕英雄传\"}
# 添加元素
c.add(\"天山姥姥\")
c.add(6)
print(\"c 集合的元素个数为:\" , len(c))
print(c)
# 删除指定元素
c.remove(\"天山姥姥\")
print(c)
print(\"c 集合的元素个数为:\" , len(c))
print(\"*\\*\\*\"*20)
# 判断是否包含指定字符串
print(\"c 集合是否包含\'乔峰\'字符串:\" , (\"乔峰\" in c)) # 输出 True
print(\"*\\*\\*\"*20)
# 使用 set()函数(构造器)来创建 set 集合
movies = set()
movies.add(\"天龙八部\")
movies.add(\"射雕英雄传\")
print(\"movies 集合的元素:\" , movies)
# issubset()方法判断是否为子集合
print(\"movies 集合是否为 c 的子集合?\", movies.issubset(c)) # 输出 False
# issuperset()方法判断是否为父集合
# issubset 和 issuperset 其实就是倒过来判断
print(\"c 集合是否完全包含 books 集合?\", c.issuperset(movies)) # 输出 False
# 用 c 集合减去 books 集合里的元素,不改变 c 集合本身
result1 = c - movies
print(result1)
# difference()方法也是对集合做减法,与用-执行运算的效果完全一样
result2 = c.difference(movies)
print(result2)
# 用 c 集合减去 books 集合里的元素,改变 c 集合本身
c.difference_update(movies)
print(\"c 集合的元素:\" , c)
# 删除 c 集合里的所有元素
c.clear()
print(\"c 集合的元素:\" , c)
print(\"*\\*\\*\"*20)
# 直接创建包含元素的集合
d = {\"python 面向对象\", \'python 基础\', \'python 爬虫\'}
print(\"d 集合的元素:\" , d)
# intersection()方法也是获取两个集合的交集,与用&执行运算的效果完全一样
inter2 = d.intersection(movies)
print(inter2)
# 计算两个集合的交集,改变 d 集合本身
d.intersection_update(movies)
print(\"d 集合的元素:\" , d)
print(\"*\\*\\*\"*20)
# 将 range 对象包装成 set 集合
e = set(range(5))
f = set(range(3, 7))
print(\"e 集合的元素:\" , e)
print(\"f 集合的元素:\" , f)
# 计算两个集合的并集,不改变 e 集合本身
un = e.union(f)
print(\'e 和 f 执行并集的结果:\', un)
# 计算两个集合的并集,改变 e 集合本身
e.update(f)
print(\'e 集合的元素:\', e)
\'\'\'
输出结果:
c 集合的元素个数为: 7
{\'天龙八部\', 6, \'虚竹\', \'乔峰\', \'段誉\', \'天山姥姥\', \'射雕英雄传\'}
{\'天龙八部\', 6, \'虚竹\', \'乔峰\', \'段誉\', \'射雕英雄传\'}
c 集合的元素个数为: 6
***
c 集合是否包含\'乔峰\'字符串: True
***
movies 集合的元素: {\'天龙八部\', \'射雕英雄传\'}
movies 集合是否为 c 的子集合? True
c 集合是否完全包含 books 集合? True
{\'乔峰\', \'段誉\', 6, \'虚竹\'}
{\'乔峰\', \'段誉\', 6, \'虚竹\'}
c 集合的元素: {6, \'虚竹\', \'乔峰\', \'段誉\'}
c 集合的元素: set()
***
d 集合的元素: {\'python 爬虫\', \'python 基础\', \'python 面向对象\'}
set()
d 集合的元素: set()
***
e 集合的元素: {0, 1, 2, 3, 4}
f 集合的元素: {3, 4, 5, 6}
e 和 f 执行并集的结果: {0, 1, 2, 3, 4, 5, 6}
e 集合的元素: {0, 1, 2, 3, 4, 5, 6}
\'\'\'
三.set 集合运算符
- <=:相当于调用 issubset() 方法,判断前面的 set 集合是否为后面的 set 集合的子集合。
- >=:相当于调用 issuperset() 方法,判断前面的 set 集合是否为后面的 set 集合的父集合。
- –:相当于调用 difference() 方法,用前面的 set 集合减去后面的 set 集合的元素。
- &:相当于调用 intersection() 方法,用于获取两个 set 集舍的交集。
- ^:计算两个集合异或的结果,就是用两个集合的并集减去交集的元素。
# !usr/bin/env python
# -_- coding:utf-8 \\__-
\"\"\"
@Author:猿说编程
@Blog(个人博客地址): www.codersrc.com
@File:Python set 集合.py
@Time:2021/04/04 11:00
@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
\"\"\"
# 使用花括号构建 set 集合
c = {\'乔峰\',\"段誉\",\"虚竹\",\"天龙八部\",\"射雕英雄传\"}
# 使用 set()函数(构造器)来创建 set 集合
movies = set()
movies.add(\"天龙八部\")
movies.add(\"射雕英雄传\")
print(\"movies 集合的元素:\" , movies)
# issubset()方法与<=运算符效果相同
print(\"movies 集合是否为 c 的子集合?\", (movies <= c)) # 输出 False
print(\"*\\*\\*\"*20)
e = set(range(5))
f = set(range(3, 7))
print(\"e 集合的元素:\" , e)
print(\"f 集合的元素:\" , f)
# 对两个集合执行异或运算
xor = e ^ f
print(\'e 和 f 执行 xor 的结果:\', xor)
# 直接创建包含元素的集合
d = {\"python 面向对象\", \'python 基础\', \'python 爬虫\'}
print(\"d 集合的元素:\" , d)
# 计算两个集合的交集,不改变 d 集合本身
inter1 = d & movies
print(inter1)
\'\'\'
输出结果:
movies 集合的元素: {\'天龙八部\', \'射雕英雄传\'}
movies 集合是否为 c 的子集合? True
***
e 集合的元素: {0, 1, 2, 3, 4}
f 集合的元素: {3, 4, 5, 6}
e 和 f 执行 xor 的结果: {0, 1, 2, 5, 6}
d 集合的元素: {\'python 基础\', \'python 面向对象\', \'python 爬虫\'}
set()
\'\'\'
四.猜你喜欢
未经允许不得转载:猿说编程 » Python set 集合
本文由博客 - 猿说编程 猿说编程 发布!
来源:https://www.cnblogs.com/shuopython/p/14900718.html
图文来源于网络,如有侵权请联系删除。