集合!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. 使用jackson转换类型时报Unrecognized field

    调用 objectMapper.convertValue(obj, valueType ); 时报错 原因 obj 的属性多于 valueType 导致,添加一条语句即可 objectMapper.c ...

  2. UVA - 10570 Meeting with Aliens(外星人聚会)(暴力枚举)

    题意:输入1~n的一个排列(3<=n<=500),每次可以交换两个整数.用最少的交换次数把排列变成1~n的一个环状序列. 分析:正序反序皆可.枚举每一个起点,求最少交换次数,取最小值. 求 ...

  3. CSS实现背景图片透明和文字不透明效果

    1.毛玻璃效果:背景图 + 伪类 + flite:blur(3px) width: 500px; height: 300px; line-height: 50px; text-align: cente ...

  4. OnPaint中画图遇到的问题

    在OnPaint函数中有CPaintDC dc1(this);这句话,在画图时,千万不要把它去掉,否则会造成消息队列阻塞.例如定时器.Invalidate()等都会失效. 造成这种现象的原因是: CP ...

  5. soap调用Jar包冲突,SOAPMessageContext

    ================================ ©Copyright 蕃薯耀 2020-01-07 https://www.cnblogs.com/fanshuyao/ soap调用 ...

  6. decltype关键字

    decltype用于编译时类型推导,是以一个普通表达式作为参数,返回该表达式的类型,而且decltype并不会对表达式进行求值. decltype的用法: //推导出表达式类型 ; decltype( ...

  7. 新iPhone的高售价下,苹果供应商们是该笑还是该哭?

    自新 iPhone发布之日起,世界就从未停止讨论其售价,越来越多的人开始困惑:新 iPhone毫无创新亮点,有什么底气卖到12799RMB呢?整个地球都在期待苹果推出廉价版 iPhone,望眼欲穿地等 ...

  8. Win10下 Java环境变量配置

    安装java的JDK   下载地址 此电脑->属性->高级设置 "系统变量"新建   变量名:Java_Home   变量值:D:\Program Files\Java ...

  9. 解决XML警告"No grammar constraints (DTD or XML Schema) referenced in the document"

    解决办法: 顶部有这两行信息即可解决警告: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE ...

  10. apache安装和mysql php配置问题

    apache下载和安装: 下载网址:http://httpd.apache.org/ 然后 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~ ...