day03-集合

一、概述

集合是无序的,天生不重复的数据组合,它的作用如下:

  • 去重,即:把一个列表变成集合,就去重了
  • 关系测试,即:测试两组集合的交集、并集和差集等

二、语法

1 >>> name_1 = [1,2,3,4,7,8,7,10]
2
3 #把列表转换为集合
4 >>> name_1 = set(name_1)
5 #转换后,去重
6 >>> print(name_1,type(name_1))
7 {1, 2, 3, 4, 7, 8, 10} <class ‘set‘>

三、关系测试

1、交集(intersection())

>>> name_1 = [1,2,3,4,7,8,7,10]
>>> name_2 = [1,3,5,8,10]
>>> name_1 = set(name_1)
>>> name_2 = set(name_2)
#输出结果
>>> name_1.intersection(name_2)
{8, 1, 10, 3}

交集(&)

1 >>> name_1 = [1,2,3,4,7,8,7,10]
2 >>> name_2 = [1,3,5,8,10]
3 >>> name_1 = set(name_1)
4 >>> name_2 = set(name_2)
5 #结果输出
6 >>> name_1 & name_2
7 {8, 1, 10, 3}

2、并集(union())

1 >>> name_1 = [1,2,3,4,7,8,7,10]
2 >>> name_2 = [1,3,5,8,10]
3 >>> name_1 = set(name_1)
4 >>> name_2 = set(name_2)
5 #输出结果
6 >>> name_1.union(name_2)
7 {1, 2, 3, 4, 5, 7, 8, 10}

并集(|)

1 >>> name_1 = [1,2,3,4,7,8,7,10]
2 >>> name_2 = [1,3,5,8,10]
3 >>> name_1 = set(name_1)
4 >>> name_2 = set(name_2)
5 #结果输出
6 >>> name_1 | name_2
7 {1, 2, 3, 4, 5, 7, 8, 10}

3、差集(difference())

差集取的是数值在第一个集合中,但是不在第二个集合中(在我不在你)

1 >>> name_1 = [1,2,3,4,7,8,7,10]
2 >>> name_2 = [1,3,5,8,10]
3 >>> name_1 = set(name_1)
4 >>> name_2 = set(name_2)
5 #输出结果
6 >>> name_1.difference(name_2)
7 {2, 4, 7}

差集(-)

1 >>> name_1 = [1,2,3,4,7,8,7,10]
2 >>> name_2 = [1,3,5,8,10]
3 >>> name_1 = set(name_1)
4 >>> name_2 = set(name_2)
5 #结果输出
6 >>> name_1 - name_2
7 {2, 4, 7}

4、issubset()

判断一个集合是否是另一个集合的子集

1 >>> name_1 = [1,2,3,4,7,8,7,10]
2 >>> name_3 = [1,2,3,4]
3 >>> name_1 = set(name_1)
4 >>> name_3 = set(name_3)
5 #输出结果
6 >>> name_3.issubset(name_1)
7 True

是否是子集(<=)

1 >>> name_1 = [1,2,3,4,7,8,10]
2 >>> name_3 = [1,2,3,4]
3 >>> name_1 = set(name_1)
4 >>> name_3 = set(name_3)
5 #输出
6 >>> name_3 <= name_1
7 True

5、issuperset()

判断一个集合是否是另一个集合的父集

1 >>> name_1 = [1,2,3,4,7,8,7,10]
2 >>> name_3 = [1,2,3,4]
3 >>> name_1 = set(name_1)
4 >>> name_3 = set(name_3)
5 #输出结果
6 >>> name_1.issuperset(name_3)
7 True

是否是父集(>=)

1 >>> name_1 = [1,2,3,4,7,8,10]
2 >>> name_3 = [1,2,3,4]
3 >>> name_1 = set(name_1)
4 >>> name_3 = set(name_3)
5 #输出
6 >>> name_1 >= name_3
7 True

6、对称差集(symmetric_difference())

把两个集合没有交集的数值取出来

1 >>> name_1 = [1,2,3,4,7,8,7,10]
2 >>> name_2 = [1,3,5,8,10]
3 >>> name_1 = set(name_1)
4 >>> name_2 = set(name_2)
5 #输出结果
6 >>> name_1.symmetric_difference(name_2)
7 {2, 4, 5, 7}

对称差集(^)

1 >>> name_1 = [1,2,3,4,7,8,7,10]
2 >>> name_2 = [1,3,5,8,10]
3 >>> name_1 = set(name_1)
4 >>> name_2 = set(name_2)
5 #输出
6 >>> name_1 ^ name_2
7 {2, 4, 5, 7}

7、isdisjoint()

判断两个集合是否有交集,没有交集,则返回True

 1 >>> name_1 = [1,2,3,4,7,8,7,10]
 2 >>> name_2 = [1,3,5,8,10]
 3 >>> name_3 = [11]
 4 >>> name_1 = set(name_1)
 5 >>> name_2 = set(name_2)
 6 >>> name_3 = set(name_3)
 7 #有交集
 8 >>> name_1.isdisjoint(name_2)
 9 False
10 #无交集
11 >>> name_1.isdisjoint(name_3)
12 True

四、基本操作

1、添加(add())

 1 >>> name_2 = [1,3,5,8,10]
 2 >>> name_2 = set(name_2)
 3 #添加已存在,不报错
 4 >>> name_2.add(1)
 5 >>> name_2
 6 {8, 1, 10, 3, 5}
 7 #添加不存在,添加一个新的数值
 8 >>> name_2.add(11)
 9 >>> name_2
10 {1, 3, 5, 8, 10, 11}

2、添加多项(update())

1 >>> name_2 = [1,3,5,8,10]
2 >>> name_2 = set(name_2)
3 >>> name_2.update([12,13,14])
4 #输出结果
5 >>> name_2
6 {1, 3, 5, 8, 10, 12, 13, 14}

3、删除(remove(),pop(),discard())

①remove()

 1 >>> name_2 = [1,3,5,8,10]
 2 >>> name_2 = set(name_2)
 3 >>> name_2
 4 {8, 1, 10, 3, 5}
 5 >>> name_2.remove(1)
 6 #输出
 7 >>> name_2
 8 {8, 10, 3, 5}
 9 #删除不存在的元素,会报错
10 >>> name_2.remove(1)
11 Traceback (most recent call last):
12   File "<input>", line 1, in <module>
13 KeyError: 1

注:用remove删除时,当元素不存在,会报错

②pop()

1 >>> name_2 = [1,3,5,8,10]
2 >>> name_2 = set(name_2)
3 >>> name_2
4 {8, 1, 10, 3, 5}
5 #输出
6 >>> name_2.pop()
7 8

注:pop是随机删除集合中的某个元素,并且打印

③discard()

1 >>> name_2 = [1,3,5,8,10]
2 >>> name_2 = set(name_2)
3 >>> name_2.discard(10)
4 #输出结果
5 >>> name_2
6 {8, 1, 3, 5}
7 #删除不存在元素,不报错
8 >>> name_2.discard(10)

注:用discard删除不存在的元素,不会出现报错

4、长度(len())

1 >>> name_1 = [1,2,3,4,7,8,7,10]
2 >>> name_1 = set(name_1)
3 #结果输出
4 >>> len(name_1)
5 7

5、x in s

测试 x 是否是 s 的成员

>>> name_1 = [1,2,3,4,7,8,7,10]
>>> name_1 = set(name_1)
#结果输出
>>> 1 in name_1
True

6、x not in s

测试 x 是否不是 s 的成员

1 >>> name_1 = [1,2,3,4,7,8,7,10]
2 >>> name_1 = set(name_1)
3 #输出
4 >>> 12 not in name_1
5 True
时间: 2024-12-11 12:03:42

day03-集合的相关文章

[Swift]Day03:集合类型

集合类型 数组 重复值的初始化 除了普通的初始化方法,我们可以通过 init(count: Int, repeatedValue: T) 来初始化一个数组并填充上重复的值: // [0.0,0.0,0.0] var threeDoubles = [Double](count:3,repeatedValue:0.0) 带索引值的遍历 我们可以用 for in 遍历数组,如果想要 index 的话,可以用 enumerate<Seq : SequenceType>(base: Seq) : let

Python基础【day03】:集合

一.概述 集合是无序的,天生不重复的数据组合,它的作用如下: 去重,即:把一个列表变成集合,就去重了 关系测试,即:测试两组集合的交集.并集和差集等 二.定义 1.语法 >>> name_1 = [1,2,3,4,7,8,7,10] #把列表转换为集合 >>> name_1 = set(name_1) #转换后,去重 >>> print(name_1,type(name_1)) {1, 2, 3, 4, 7, 8, 10} <class 'set

Python 变量类型day03

变量赋值 Python中的变量不需要声明,变量的赋值操作既是变量声明和定义的过程. 每个变量在内存中创建,都包括变量的标识,名称和数据这些信息. 每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建. 等号(=)用来给变量赋值. 等号(=)运算符左边是一个变量名,等号(=)运算符右边是存储在变量中的值.例如: #!/usr/bin/python counter = 100 # An integer assignment miles = 1000.0 # A floating point na

My way to Python - Day03

列表和字典的赋值 1 dict1 = {} 2 dict1['k1'] = 'v1' 3 4 list1 = [] 5 list1.append('v1') 集合系列 1,计数器 1 Python 2.7.6 (default, Mar 22 2014, 22:59:56) 2 [GCC 4.8.2] on linux2 3 Type "help", "copyright", "credits" or "license" fo

JAVASE02-Unit03: 日期操作 、 集合框架

Unit03: 日期操作 . 集合框架 java.util.Date package day03; import java.util.Date; /** * java.util.Date * Date内部维护一个long值,该值表示自1970年元旦 * 到该对象表示的时间点之间所经过的毫秒值 * 由于Date存在时区,千年虫问题,所以在jdk1.1发布 * 时大部分操作时间的方法全部被标注为过时方法,不再 * 建议使用. * 现在Date仅用于表示一个具体的时间点. * @author admi

day03 JavaScript

day03 上节内容回顾    1.html的表单标签        <form>:            ** action method enctype        输入项:            ** type="text"            ** passwrod            ** radio            ** checkbox            ** file            ** submit            ** re

马哥2013年运维视频笔记 day03 Linux系统常识

day03 ①.回顾 描述GPL.BSD.APACHE三大开源协议? 自由软件,开源协定  版权描述 www.kernel.org GNU/Linux-->发布的是源代码-->第三方软件公司重新打包发行-->目前流行的发行版-->RedHat (Fedora 个人社区版   CentOS 社区企业版) -->SUSE (OpenSUSE) -->Debian --> Ubuntu -->Mint --> Gentoo --> LFS (Linux

数组、字符串、集合

数组与集合的转换.数组与字符串的转换 ========数组变集合 String[] arr = {"abc","cc","kkkk"}; //把数组变成list集合有什么好处? /* 可以使用集合的思想和方法来操作数组中的元素. 注意:将数组变成集合,不可以使用集合的增删方法. 因为数组的长度是固定. contains. get indexOf() subList(); 如果你增删.那么会产生UnsupportedOperationExcepti

C#语言中数组和集合

数组.集合→用于储存多个同类型的数据数组 定长→用于保存固定数量的数据 在功能上,数组能实现的所有功能,集合都能实现:反之,集合能实现的某些功能,数组难以实现 占用内存少 便利速度快集合 不定长→保存的数据数量,可以在程序的执行过程中,发生变化 占用内存多 便利速度慢课时六:数组和集合 数组.集合→用于储存多个同类型的数据 数组 定长→用于保存固定数量的数据 在功能上,数组能实现的所有功能,集合都能实现:反之,集合能实现的某些功能,数组难以实现 占用内存少 便利速度快 集合 不定长→保存的数据数

通过反射了解集合泛型的本质

通过反射了解集合泛型的本质 import java.lang.reflect.Method; import java.util.ArrayList; /** * 通过反射了解集合泛型的本质 * @author shm * */ public class MethodDemo02 { public static void main(String[] args) { ArrayList list = new ArrayList(); list.add("hello"); list.add(