Python set集合 – Python零基础入门教程

Python set集合 – Python零基础入门教程目录一.set集合简介二.set集合常用函数三.set集合运算符四.猜你喜欢零基础Python学习路线推荐: Python学习目录 >>&#16

大家好,又见面了,我是你们的朋友全栈君。

目录

零基础 Python 学习路线推荐 : Python 学习目录 >> Python 基础入门

Python 变量中除了以前文章所提到的整形 int / 浮点数 float / 布尔值 bool / 列表 list / 字典 dict  之外,还有一个类型我们还没有做详细介绍,这个变量类型就是集合 set。

Python 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 的元素类似!

Python set集合

二.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}
  '''

Python set集合

三.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集合

四.猜你喜欢

  1. Python 字符串/列表/元组/字典之间的相互转换
  2. Python 局部变量和全局变量
  3. Python type 函数和 isinstance 函数区别
  4. Python is 和 == 区别
  5. Python 可变数据类型和不可变数据类型
  6. Python 浅拷贝和深拷贝
  7. Python 递归函数
  8. Python sys 模块
  9. Python 列表 list
  10. Python 元组 tuple
  11. Python 字典 dict
  12. Python 条件推导式
  13. Python 列表推导式
  14. Python 字典推导式
  15. Python 函数声明和调用
  16. Python 不定长参数 *argc/**kargcs

未经允许不得转载:猿说编程 » Python set 集合

本文由博客 – 猿说编程 猿说编程 发布!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/156017.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 【综合帖】Java并发多线程编程学习专栏

    本帖主要用于记录Java多线程或并发编程的一些学习书籍和一些优秀的博文,方便自己学习并发多线程编程的知识!也为了通过自己的学习整理出学习笔记,输出一个java并发编程的专栏。让自己的学习的知识沉淀下来!本篇记录的博文或者些图片内容都来自互联网,如果有任何侵权或者疑问,可以联系我!

    2022年2月26日
    51
  • VSCode 前端常用插件集合

    VSCode 前端常用插件集合VisualStudioCode是由微软开发的一款免费、跨平台的文本编辑器。由于其卓越的性能和丰富的功能,它很快就受到了大家的喜爱。但工欲善其事必先利其器,以下是本人为前端开发收集的常用的vscode插件,有需要的话赶紧mark起来吧~

    2022年7月25日
    10
  • 下载并安装windows版本的Redis

    打开官网:https://redis.io/download发现官网名没有提供Windows版本,只有Linux版本,费了一番周折,说是GitHub上才有地址是:https://github.com/MicrosoftArchive/redis/tags貌似比Linux的版本有点滞后,应该不影响,下载最新版本吧先download,下载mis版这个网站在国外,…

    2022年4月6日
    92
  • 想发表文章在哪里发表_微信朋友圈怎么弄的置顶文字

    想发表文章在哪里发表_微信朋友圈怎么弄的置顶文字  因为博客中的文章已经越来越来了,为了便于文章检索,特整理本文,欢迎收藏!!!Java核心1.JDK8新特性Lambda表达式讲解接口新特性函数式接口方法引用Stream流Optional工具类介绍新的日期时间工具类介绍注解的增强2.Java核心Java集合核心内容之数组和链表Java集合核心内容之二叉树2-3-4树详解红黑树详解精讲红黑树删除操作剖析反射的本质3.设计模式3.1创建型模式  都是用来帮助我们创建对象的!模式地址单例模式ht

    2025年12月1日
    6
  • javaweb中getRealPath()的理解

    javaweb中getRealPath()的理解        getServletContext().getRealPath("/fbb.jpg");动态的得到WebRoot中文件在磁盘中的位置。打印一下发现:文件被全部拷贝了部署的文件夹下,不是我们开发环境中的。写全路径,getServletContext()是继承自父类HttpServlet的父类中的方法!getRealPath();不仅可以获得文件,还可以获得文件夹!不管存不存在,只要逻…

    2025年11月26日
    3
  • stc12c5a60s2功能说明(STC12C5A60S2默认触发)

    最近学习一下SD卡的驱动,网上程序的版本很多,使用的MCU和SD卡的型号千奇百怪,学起来反而没有方向,感觉上乱七八糟的,直到现在,才直到我们平常说的SD卡实际上有很多中类别。0到2G的SD卡,最普通的卡;2G到32G的SDHC卡,也就是现在最常用的大容量SD卡;还有我没有见过的SDXC卡,容量好像在32G以上。同时还有手机上的TF卡,实际上也是SD卡只不过做工不同而已,MMC卡。学习的时候走了很

    2022年4月12日
    57

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号