Python笔记_第一篇_面向过程_第一部分_5.Python数据类型之集合类型(set)
集合!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)的更多相关文章
- Python笔记_第一篇_面向过程_第一部分_2.内存详解
Python的很多教材中并没有讲内存方面的知识,但是内存的知识非常重要,对于计算机工作原理和方便理解编程语言是非常重要的,尤其是小白,因此需要把这一方面加上,能够更加深入的理解编程语言.这里引用了C语 ...
- Python笔记_第一篇_面向过程_第一部分_1.Python环境的设置(含虚拟机)
*Python环境的设置 Python的环境设置也就是所需工作平台的软件搭建.常用的搭建平台IOS系统+Linux系统和Windows+Linux系统的搭建.这里主要说明的是Windows+Linux ...
- Python笔记_第一篇_面向过程_第一部分_6.条件控制语句(if)
Python正如其他语言一样存在两种常用的逻辑判断体(也叫结构化程序设计).所谓逻辑判断体是通过你想要完成的编程思路,通过在逻辑判断体中的相互判断和作用得到你想要的结果.逻辑判断体也叫控制语句,Pyt ...
- Python笔记_第二篇_面向过程_第二部分_2.路径、栈和队列、内存修改
这一部分分三个主题进行讲解,主要为后面的模块.包.第三方库的概念补充一些相关的内容. 1. 路径(Path): 相对路径和绝对路径. 举例1:我们先导入一个os库(模块)来观察一下路径 import ...
- 四、java基础-面向过程_对象_类中可出现的因素
1.面向过程和面向对象区别: 1)面向过程:开发一个应用程序.一个项目,必须先了解整个过程,了解各个步骤.模块间的因果关系,使的面向过程方式去开发程序时,代码和代码之间的关联程度是非常强.所以其中任何 ...
- python自动化开发-[第五天]-面向过程、模块、包
今日概要: 1.内置模块 2.协程函数 3.递归 4.面向过程编程与函数编程 5.模块 6.包 7.re正则 一.内置模块 1.匿名函数lambda 定义:匿名函数通常是创建了可以被调用的函数,它返回 ...
- python第四周迭代器生成器序列化面向过程递归
第一节装饰器复习和知识储备------------ 第一节装饰器复习和知识储备------------ def wrapper(*args,**kwargs): index(*args,**kwa ...
- [Python笔记]第八篇:模块
本篇主要内容:python常用模块用法介绍 什么是模块 模块,用一大段代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性 ...
- [Python笔记]第三篇:深浅拷贝、函数
本篇主要内容:深浅拷贝,自定义函数,三目运算,lambda表达式, 深浅拷贝 一.数字和字符串 对于 数字 和 字符串 而言,赋值.浅拷贝和深拷贝无意义,因为其永远指向同一个内存地址. import ...
- python之迭代器、生成器、面向过程编程
一 迭代器 一 迭代的概念 #迭代器即迭代的工具,那什么是迭代呢?#迭代是一个重复的过程,每次重复即一次迭代,并且每次迭代的结果都是下一次迭代的初始值 while True: #只是单纯地重复,因而不 ...
随机推荐
- EUI库 - 9 - 数据集合 - 数组集合
ArrayCollection 当数组内的数据被修改了(增删改),组件能有效的获知 myCollection.addEventListener(eui.CollectionEvent.COLLE ...
- 剑指offer_1.24_Day_4
构建乘积数组 给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1] ...
- mariadb主从
实验环境: 两台centos7 master:192.168.1.6 slave:192.168.1.7 一.安装mariadb服务 [root@master ~]# yum -y install m ...
- 2019.1的IDEA的Pulgins无法使用解决
第一步 第二步
- 一个例子搞清楚Java程序执行顺序
当我们new一个GirlFriend时,我们都做了什么? 一个例子搞懂Java程序运行顺序 public class Girl { Person person = new Person("G ...
- Mybatis实现条件查询(三)
1. 准备 请先完成Mybatis基本配置(一)的基本内容 2. 疑问 我们再Mybatis基本配置(一)中实现了按照商品ID进行查询商品信息,可是在实际应用中却很少出现根据ID来查询商品的情况.因为 ...
- 求1+2+3+…..+n
[问题]求1+2+3+…+n,要求不能使用乘除法.for.while.if.else.switch.case等关键字及条件判断语句(A?B:C). [思路]由于题目好多运算符不能用,我们只有想到使用递 ...
- 2.3 使用Android Studio 简单设计UI界面
首先 创建一个新的项目找到app 文件目录下的layout的 activity_main.xml 因为Android Studio 是可视化的,所有操作都可以在图形界面进行. 该res 界面当中 d ...
- linux 替换jdk指定jar包
我的bug是:jdk1.8的安全策略和腾讯邮箱服务有冲突.我知道的解决方法: 1更换低版本安全策略相关的jar包.(windows:http://www.cnblogs.com/dennyzhangd ...
- UVA 11019 二维匹配 AC自动机
这个题目要求在一个大矩阵里面匹配一个小矩阵,是AC自动机的灵活应用 思路是逐行按普通AC自动机匹配,用过counts[i][j]记录一下T字符矩阵以i行j列为开头的与P等大的矩阵区域 有多少行已经匹配 ...