集合!Python中的集合数据基本上是为了方便数学计算使用的。

  什么是集合?

  集合就是“确定的一堆东西”。集合里面的东西叫做元素。

  特点:1. 集合里面是没有重复的元素的。

             2. 集合的创建也是通过( )的方式进行创建,里面可以是字符串的形式,也可以是列表等其他形式。

        3. 集合和字典一样也是没有顺序的概念。

                  4. 集合每次显示结果的顺序都是随机的!

  分类:在Python中对于集合分可变集合也就是最常用的set,还有一种叫frozenset(冻结集合)有不可编辑的性质。最主要的还是set集合,他们有一些区别。

  区别:1. set:无序排列且不重复,不存在哈希值,元素是可变的,有add()、remove()等方法。

      frozenset:是不可变的,存在哈希值,好处是他可以作为字典的key,也可以作为其他集合的元素。但是一旦创建没有add()、remove()等方法。

     2. set:基本功能包括关系测试和消除重复元素,集合对象还支持union(联合、并集)、intersection(交集)、difference(差集)和sysmmetric difference(对称差集)等数学运算。

1.   集合的简单应用

1.1   创建集合

  语法:集合名 = set ("元素1", "元素2", "元素n")

  创建一个空集合和带有元素的集合

 # 创建集合 #
set0 = set()
set1 = set("boyaaaaa") # 字符串按照单个元素进行拆分
set2 = set(["y", "b", "o"]) # 也可以额用列表方式进行创建
set3 = set([1, 2, 3])
set4 = set([123,])
print(set0)
print(type(set0))
print(set1)
print(set2)
print(type(set2))
print(set3)
print(set4)
# 输出结果:
# set()
# <class 'set'>
# {'y', 'a', 'o', 'b'} # 注意一下,这里集合的显示结果是用花括号列出的
# {'b', 'o', 'y'} # 注意一下,这里集合的显示结果是用花括号列出的
# <class 'set'> # 注意一下,这里集合的显示结果是用花括号列出的
# {1, 2, 3} # 注意一下,这里集合的显示结果是用花括号列出的
# {123} # 注意一下,这里集合的显示结果是用花括号列出的

1.2   集合的常规操作

  有一个函数没见过,列出一下:

  函:set.add

    语:set.add("元素")

      用:把元素添加到set集合里面

 # 集合添加、删除 #
# 添加
a = set("set")
a.add("python") # 任意位置添加
print(a)
# 输出结果:
# {'s', 'e', 'python', 't'} b = set("boy")
b.update("python") # 按照字符串的字符进行打散添加
print(b)
# 输出结果:
# {'y', 'p', 'h', 'b', 'o', 'n', 't'} # 删除
c = set(["y", "python", "b", "o"])
c.remove("python")
print(c)
# 输出结果:{'o', 'b', 'y'}

2.   集合的数学运算

  集合的数学运算主要包括:

  - 差集、相对补集运算,谁相对于谁没有的元素

  & 并集;两个集合当中相同的元素,或者函数union(s)

  | 合集;a和b两个集合进行组合

  != 不等于;判断两个集合的元素是否相等,如果不相等返回为True,否则为False

  == 相等;判断两个集合的元素是否相等,如果相等返回为True,否则为True

  in 包含;判断集合a是否包含在集合b当中,如果包含返回为Ture,否则为False

  not in 不包含;判断集合a是否不包含在集合b当中,如果不包含返回为True,否则为False

 # 集合的数学运算 #
a = set("abc")
b = set("cdef")
# - 差集、相对补集运算,谁相对于谁没有的元素
print(a - b, b - a) # 输出结果:{'b', 'a'} {'d', 'f', 'e'} # & 并集;两个集合当中相同的元素
print(a & b) # 输出结果:{'c'} # | 合集;a和b两个集合进行组合
print(a | b) # 输出结果:{'b', 'e', 'c', 'a', 'd', 'f'} # != 不等于;判断两个集合的元素是否相等,如果不相等返回为True,否则为False
print(a != b) # 输出结果:True # == 相等;判断两个集合的元素是否相等,如果相等返回为True,否则为True
print(a == b) # 输出结果:False # in 包含;判断集合a是否包含在集合b当中,如果包含返回为Ture,否则为False
print(a in b) # 输出结果:False # not in 不包含;判断集合a是否不包含在集合b当中,如果不包含返回为True,否则为False
print(a not in b) # 输出结果:True

2. 补充说明

  除了常用的这些数据类型,还如布尔型等参照其他资料即可,非常简单

Python笔记_第一篇_面向过程_第一部分_5.Python数据类型之集合类型(set)的更多相关文章

  1. Python笔记_第一篇_面向过程_第一部分_2.内存详解

    Python的很多教材中并没有讲内存方面的知识,但是内存的知识非常重要,对于计算机工作原理和方便理解编程语言是非常重要的,尤其是小白,因此需要把这一方面加上,能够更加深入的理解编程语言.这里引用了C语 ...

  2. Python笔记_第一篇_面向过程_第一部分_1.Python环境的设置(含虚拟机)

    *Python环境的设置 Python的环境设置也就是所需工作平台的软件搭建.常用的搭建平台IOS系统+Linux系统和Windows+Linux系统的搭建.这里主要说明的是Windows+Linux ...

  3. Python笔记_第一篇_面向过程_第一部分_6.条件控制语句(if)

    Python正如其他语言一样存在两种常用的逻辑判断体(也叫结构化程序设计).所谓逻辑判断体是通过你想要完成的编程思路,通过在逻辑判断体中的相互判断和作用得到你想要的结果.逻辑判断体也叫控制语句,Pyt ...

  4. Python笔记_第二篇_面向过程_第二部分_2.路径、栈和队列、内存修改

    这一部分分三个主题进行讲解,主要为后面的模块.包.第三方库的概念补充一些相关的内容. 1. 路径(Path): 相对路径和绝对路径. 举例1:我们先导入一个os库(模块)来观察一下路径 import ...

  5. 四、java基础-面向过程_对象_类中可出现的因素

    1.面向过程和面向对象区别: 1)面向过程:开发一个应用程序.一个项目,必须先了解整个过程,了解各个步骤.模块间的因果关系,使的面向过程方式去开发程序时,代码和代码之间的关联程度是非常强.所以其中任何 ...

  6. python自动化开发-[第五天]-面向过程、模块、包

    今日概要: 1.内置模块 2.协程函数 3.递归 4.面向过程编程与函数编程 5.模块 6.包 7.re正则 一.内置模块 1.匿名函数lambda 定义:匿名函数通常是创建了可以被调用的函数,它返回 ...

  7. python第四周迭代器生成器序列化面向过程递归

      第一节装饰器复习和知识储备------------ 第一节装饰器复习和知识储备------------ def wrapper(*args,**kwargs): index(*args,**kwa ...

  8. [Python笔记]第八篇:模块

    本篇主要内容:python常用模块用法介绍 什么是模块 模块,用一大段代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性 ...

  9. [Python笔记]第三篇:深浅拷贝、函数

    本篇主要内容:深浅拷贝,自定义函数,三目运算,lambda表达式, 深浅拷贝 一.数字和字符串 对于 数字 和 字符串 而言,赋值.浅拷贝和深拷贝无意义,因为其永远指向同一个内存地址. import ...

  10. python之迭代器、生成器、面向过程编程

    一 迭代器 一 迭代的概念 #迭代器即迭代的工具,那什么是迭代呢?#迭代是一个重复的过程,每次重复即一次迭代,并且每次迭代的结果都是下一次迭代的初始值 while True: #只是单纯地重复,因而不 ...

随机推荐

  1. UVA - 1612 Guess (猜名次)(贪心)

    题意:有n(n<=16384)位选手参加编程比赛.比赛有3道题目,每个选手的每道题目都有一个评测之前的预得分(这个分数和选手提交程序的时间相关,提交得越早,预得分越大).接下来是系统测试.如果某 ...

  2. C++ 大文件读写

    //你必须映射一个只包含一小部分文件数据的文件视图.首先映射一//个文件的开头的视图.当完成对文件的第一个视图的访问时,可以取消它的映像,然后映射//一个从文件中的一个更深的位移开始的新视图.必须重复 ...

  3. 大数据高可用集群环境安装与配置(05)——安装zookeeper集群

    1. 下载安装包 登录官网下载安装包 https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/ 2. 执行命令下载并安装 cd /usr/local ...

  4. stm32cube 安装 patch

    首先正常安装芯片包,然后在设置里面找到当前包存放的位置,默认是: C:\Users\Administrator\STM32Cube\Repository 然后解压 更新包,把更新包里面的文件覆盖到 C ...

  5. 关于torch.nn.Linear的笔记

    关于该类: torch.nn.Linear(in_features, out_features, bias=True) 可以对输入数据进行线性变换: $y  = x A^T + b$ in_featu ...

  6. Gym - 101142C CodeCoder vs TopForces(搜索)

    题意:给定n个人在两个网站上的得分,一个人若能在任意一个网站里战胜另一个人,则认为这个人能战胜那个人.问每个人都能战胜多少人. 分析: 1.战胜具有传递性. 例如: 4 5 2 7 3 3 因为第三个 ...

  7. JavaSE--java是值传递还是引用传递

    引用是已定义的变量的别名. 按引用传递就是一个变量使用两个名称. 两个变量在内存中的地址都是一样的. 按值传递, 传递的是值的拷贝. C++中可以通过传引用来改变传入的参数的值.在C++中可以通过以下 ...

  8. [APIO2018]铁人两项(圆方树)

    过了14个月再重新看这题,发现圆方树从来就没有写过.然后写了这题发现自己APIO2018打铁的原因竟然是没开long long,将树的部分的O(n)写挂了(爆int),毕竟去年APIO时我啥都不会,连 ...

  9. BZOJ [Cqoi2017] 小Q的棋盘

    题解:枚举最后在哪里停止,然后剩下的步数/2 也就是找最大深度 枚举终止位置算是一种思路吧 #include<iostream> #include<cstdio> #inclu ...

  10. CTF -bugku-web-web基础$_GET和$_POST

    ---恢复内容开始--- GET那题 就算没有学过php也会看懂if条件语句 于是我们在url后面直接加 ?what = flag 这样echo输出flag POST那题 直接火狐 要装hackbar ...