python笔记系列-day7:集合 set

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/fk002008/article/details/84820738

集合的概念 {元素}

集合set 是装有 独特值的无序袋子

1.创建集合 {元素必须存在}

注意 集合的类型是 set ,创建集合的时候,变量的名字不要写成 set ,以免覆盖set

a_set={1}

2.使用列表来创建集合

如同之前的列表和元组互换一样,可以使用 集合 set提供的函数set(列表)来进行类型的转换

3.创建一个空的集合

直接使用 set()来创建一个空的集合,这个和C体系的 构造函数一样的道理

这个时候主要一下,空的集合 和 {} 不是一个概念哦

虽然 集合是用 {} 创建的,但是里面必须要有元素

然后如果没有元素的时候,不能使用{} 表示集合了

这个时候的{} 表示了一个字典

4.求集合元素的个数

len(集合变量)

说明: 到这里我们发现了一个问题,求解长度 都用了 len() 函数了

没有如同 C 体系一样使用各自的 对象的 len方法

从字符串到集合 都是使用 len() 函数进行求解的

字符串,列表,元组,集合

这些都是多个元素的特征的

因此 可以理解为 可迭代的东西,len() 的输入值本质就是可迭代的东西

集合的操作

1 给集合中添加值

方法一 : 使用集合的 add 方法,添加元素

注意该元素如果和集合中的元素重复,不会报错,什么也不会改变

相当一个空的操作

方法二:使用集合的update方法

该方法接收一个集合作为参数,相当于对输入的集合的元素依次

调用 原来集合的add方法将他们插入到原来的集合中

 说明:update方法可以携带多个参数的,

因此update可以接收多个集合作为输入参数

关于update方法进行的思维展开

我们尝试添加一个 数看看

TypeError: 'int' object is not iterable

结果是 int 不是一个可迭代的

那么意思是不是只要输入的参数是一个 可迭代的都可以呢?

不仅仅是集合这一种 ? 我们实验下

我们发现当输入的参数是 列表或者是元祖的时候也是可以的

所以呢 输入的值是可迭代的,例如下面的列表和元组,字符串也是可以的

因此我们之前学到的列表的操作 extend肯定也是一样的

 

所以呢,从现在开始,我们应该用 可迭代的观点 认识

字符串 , 列表 , 元祖 , 集合

如果输入的参数是他们之中一个,那么可能 迭代器作为输入都是可以的

可以迭代的东西,表象展示就是我们看到的上面的几个类型

但是学过Java知道,肯定有一个迭代器的存在

那么我们可以通过其他方式定义这个迭代器的

这个时候我们自己定义的迭代器也是可以作为输入参数的

2 删除集合的元素三种方法

方法一 使用 集合对象的 discard方法

该方法接收一个 集合的元素作为参数,从而删除该指定的元素

如果指定的元素在集合中不存在,那么相当一个空的指令,不会报错的

注意只能是单值的输入,如果输入的值是一个集合的子集,相当于找不到元素

方法二:使用集合对象的remove方法进行删除

该方法也是接收一个单值作为输入

但是如果该值在集合中不存在的时候,那么该方法会报异常的 KeyError

KeyError:xxx

方法三 集合的pop方法

和列表一样,集合也有这个 pop方法

但是集合是无序的,因此不会像 堆栈那样pop总是末尾的

集合的pop方法 会删除一个元素,该元素的位置不定,然后返回该删除的元素

列表可以使用 del 列表元素来删除列表的一个元素

但是集合呢没有这个访问固定元素的功能,因此不能使用 del 操作符进行

3.清空集合

这个和列表的清空一样,使用 clear 方法进行清空即可

4. 判断某个元素是否在集合中

这个和列表一样 我们可以使用 in 操作符

到这里我们也发现,

del , in 这些操作符

in 在 列表 , 元组 , 集合中都可以使用

因此也可以推断出 , del , in 也适合于这个 可迭代的

然而,列表和元组的 index 方法 对于集合是没有的,无法使用

5.集合的并操作

使用集合的 union操作可以进行并集操作,union()

union()方法返回一个新集合

和之前的推断一样,凡是能够接收一个集合作为入参的,那么也可以接收

一个可迭代的,因此 列表和元组都是可以的

6.集合的交集操作

使用 intersection方法进行集合的交集操作

交集操作也一样,可以使用这个 元组作为输入的参数

7.集合的差操作

A-B 在A中但是不在B中的元素

使用difference 方法进行

可以接收一个可迭代的东西作为输入参数

8.两个集合只在一个集合中出现的元素

这个表示的是 只在一个集合中出现

也就是下图中 蓝色区域

也就是 A+B-A∩B

这个使用 集合的 symmetric_difference 方法进行

9.集合操作的对称性

union , intersection , symmetric_difference 这三个操作是对称的

但是 difference 操作不是对称的

10.判断一个集合是否是一个集合的子集合

使用 issubset 方法进行判断,和前面的方法一样,能接收一个集合作为参数

也能接收一个迭代器

12.空集合为假值

这个要注意,空集合为假值

使用 if 判断的时候 检测结果为 False

集合的解析

集合的解析和列表是类似的,只要将 [] 换成这个 {} 就行了

猜你喜欢

转载自blog.csdn.net/fk002008/article/details/84820738