大家好,又见面了,我是你们的朋友全栈君。
目录
零基础 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 字符串/列表/元组/字典之间的相互转换
- Python 局部变量和全局变量
- Python type 函数和 isinstance 函数区别
- Python is 和 == 区别
- Python 可变数据类型和不可变数据类型
- Python 浅拷贝和深拷贝
- Python 递归函数
- Python sys 模块
- Python 列表 list
- Python 元组 tuple
- Python 字典 dict
- Python 条件推导式
- Python 列表推导式
- Python 字典推导式
- Python 函数声明和调用
- Python 不定长参数 *argc/**kargcs
未经允许不得转载:猿说编程 » Python set 集合
本文由博客 – 猿说编程 猿说编程 发布!
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/156017.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...