组合数据类型(集合)

news/2024/7/8 3:05:02

组合数据类型包括集合类型及操作、序列类型及操作(元组类型和列表类型)、字典类型及操作

集合是多个元素的无序组合

集合类型与数学中的集合概念一致,数学中的集合是指具有某种特定性质的对象汇总而成的集体,其中组成集合的对象称为该集合的元素

集合元素之间无序,每个元素唯一,不存在相同元素。

集合元素不可更改,不能存在可变数据类型

列表、字典是可变数据类型,整型、浮点型、复数、字符串类型、元组类型等等是不可变数据类型。

集合用大括号{}表示,元素间用逗号分割。

建立集合类型用{ }或set( )

建立空集合类型,只能使用set(),{}不能创建空集合(不包含元素的{}创建的是空字典)

示例代码如下:

A={"python"}    #使用{}建立集合
B=set("python123") #使用set()建立集合,使得字符串中的每一个字符单独拆分,变成集合的一个元素
print("A={}\nB={}".format(A,B))

运行界面如下:

集合操作符:

(1)并集:S|T,返回一个新集合,包括在集合S和T中的所有元素

代码示例如下:

S={"python"}
T=set("python123")
A=S|T
print("S|T={}".format(A))

运行界面如下:

(2)差集 :S-T,返回一个新集合,包括在集合S但不在T中的元素

代码示例如下:

S={"python"}
T=set("python123")
A=S-T
print("S-T={}".format(A))

运行界面如下:

(3)交集 :S&T,返回一个新集合,包括在集合S和T中的元素

代码示例如下:

S={"python"}
T=set("python123")
A=S&T
print("S&T={}".format(A))

运行界面如下: 

(4)补集:S^T,返回一个新集合,包括在集合S和T中的非相同元素

代码示例如下:

S={"python"}
T=set("python123")
A=S^T
print("S^T={}".format(A))

运行界面如下:

(5)关系操作符:S<=T或S<T  返回True/False,判断S和T的子集关系

代码格式如下:

S={"python"}
T=set("python123")
A=S<=T
B=S<T
print("S<=T:{}\nS<T:{}".format(A,B))

运行界面如下:

(6)关系操作符:S>=T或S>T  返回True/False,判断S和T的包含关系

代码格式如下:

S={"python"}
T=set("python123")
A=S>=T
B=S>T
print("S>=T:{}\nS>T:{}".format(A,B))

运行界面如下: 

(7)增强操作符:S^=T 更新集合S,包括集合S和T中的非相同元素,用S和T补运算之后的结果来更新集合S元素

代码格式如下:

S={"python"}
T=set("python123")
S^=T
print("S^=T:{}".format(S))

运行界面如下: 

(8)增强操作符:S|=T 更新集合S,包括在集合S和T中的所有元素,用S和T并运算之后的结果来更新集合S元素

代码格式如下:

S={"python"}
T=set("python123")
S|=T
print("S|=T:{}".format(S))

运行界面如下: 

(9)增强操作符:S-=T 更新集合S,包括在集合S但不在集合T中的元素,用S和T差运算之后的结果来更新集合S元素

代码格式如下:

S={"python"}
T=set("python123")
S-=T
print("S-=T:{}".format(S))

运行界面如下:

 (10)增强操作符:S&=T 更新集合S,包括同时在集合S和集合T中的元素,用S和T交运算之后的结果来更新集合S元素

代码格式如下:

S={"python"}
T=set("python123")
S&=T
print("S&T:{}".format(S))

运行界面如下:

(11)X in S 判断S中元素X,X在集合S中,返回True,否则返回False

代码示例如下:

S={"python"}
T=set("python123")
a="p" in S
print("p in S={}".format(a))

运行界面如下: 

(12)X not in S 判断S中元素X,X在集合S中,返回True,否则返回False

代码示例如下:

S={"python"}
T=set("python123")
a="p" not in S
print("p not in S={}".format(a))

运行界面如下:

 (13)set(x) 将其他类型变量x转变为集合类型

代码示例如下:

s1=set([1,2,3])
print("T:{}".format(s1))

运行界面如图所示:

通过结果可知,我们将列表类型的s1转变成了集合类型。

遍历集合:

代码示例如下:

A={1,2,3,"rgf","ypl"}
for item in A:
    print(item,end=" ")
    

运行界面如下: 

异常类型传递:

代码示例如下:

A = {1, 2, 3,"rgf", "ypl"}
try:
    while True<3:
      print(A.pop(), end=" \n")
except KeyError as error:
    print("出错了,原因:",error)

运行界面如图所示: 

集合的常见方法:

(1)len()方法,返回集合s的元素个数。

代码示例如下:

A = {1, 2, 3,"rgf", "ypl"}
print(len(A))

运行界面如下:

(2)add()方法,向集合中添加元素。

代码示例如下:

A = {1, 2, 3,"rgf", "ypl"}
A.add("LOVE")
print(A)

运行界面如图:

 (3)remove()方法,删除集合中的元素x,若x不存在则抛出KeyError异常。

代码示例如下:

A = {1, 2, 3, "rgf", "ypl"}
A.remove(1)
print(A)y

运行界面如下: 

(4)discard()方法,删除集合中的元素x,若x不存在不做处理。

代码示例如下:

A = {1, 2, 3, 4, "rgf", "ypl"}
A.discard(1)
print(A)

运行界面如下:

(5)clear( )方法,清空集合

代码示例如下:

A = {1, 2, 3,4, "rgf", "ypl"}
A.clear()
print(A)

运行界面如图所示:

(6)copy()方法,复制集合,返回值为集合。

代码示例如下:

A = {1, 2, 3,4, "rgf", "ypl"}
B=A.copy()
print(B)

运行界面如图:

 

 (7)pop()方法,随机返回集合中的一个元素,同时删除该元素;若集合为空,则抛出KeyError异常。

代码示例如下:

A = {1, 2, 3, "rgf", "ypl"}
print(A.pop())
print(A)

运行界面如图:

(8)isdisjoint(),判断集合与集合T是否没有相同的元素,没有返回True,有则返回False。

代码示例如下:

A = {1, 2, 3,4, "rgf", "ypl"}
T={1,2,3,4,5}
print(A.isdisjoint(T))

运行界面如下:

集合推导式:

集合也可以利用推导式创建,集合推导式的格式与列表推导式的格式相似,区别在于集合推导式外侧为大括号“{}”,具体如下所示:

{exp for x in set if cond}         exp为数据,x为数据类型,set为使用的数据,cond为生成要求

以上格式中遍历的可以是集合或其他可迭代对象,利用集合推导式在列表ls的基础上生成只包含偶数元素的集合,示例代码如下:

ls=[1,2,3,4,5,6,7,8,9]
s={data for data in ls if data%2==0}
print(s)

运行界面如下:

 集合类型应用场景:

包含关系比较:

代码示例如下:

A = {1, 2, 3,"rgf", "ypl"}
a="p"  in {1, 2, 3,"rgf", "ypl"}
b="rgf"  in  {1, 2, 3,"rgf", "ypl"}
print("1 in A:{},5 in A:{}".format(a,b))

运行界面如下: 

数据去重:集合类型所有元素无重复

代码示例如下:

ls=["p","p","y","y",123]
s=set(ls)
print(s)

运行界面如图:

数据转换:

代码示例如下:

ls=["p","p","y","y",123]
s=set(ls)
lt=list(s)
print(lt)

运行界面如下:

由以上可知,我们通过set()将列表ls转变为集合类型,之后又通过list将集合s转变为列表lt进行输出。


http://www.niftyadmin.cn/n/4083965.html

相关文章

浏览器本身自带的下载管理器和专用下载软件的区别

最近&#xff0c;需下载Solaris操作系统的iso文件&#xff0c;我先后使用了好几个浏览器来下载该文件&#xff0c;最后都会在下载的中途停止&#xff0c;显示的细致速度为0。我之所以没有采用专用的下载软件&#xff0c;如FlashGet等下载&#xff0c;是因为我浏览器本身自带的下…

数据存储层

宽泛地讲&#xff0c;据对一致性&#xff08;consistency&#xff09;要求的强弱不同&#xff0c;分布式数据存储策略&#xff0c;可分为ACID和BASE两大阵营。ACID是指数据库事务具有的四个特性&#xff1a;原子性&#xff08;Atomicity&#xff09;、一致性&#xff08;Consis…

keygen文件被小红伞自动删除的解决办法

我需要安装一个破解的软件&#xff0c;要用keygen.exe文件产生license文件&#xff0c;可是当我解压出文件keygen.exe后&#xff0c;小红伞 (Avira Free Antivirus)将该文件自动识别为病毒文件&#xff0c;同时启动扫描程序&#xff0c;对电脑系统进行扫描。我就根本不能使用文…

C++ const的用法和作用

地方转载于:https://www.cnblogs.com/DswCnblog/p/6489880.html

在Win7系统上利用Simics安装Solaris 8 SPARC操作系统

1 介绍 我有一个二进制文件&#xff0c;是一个程序&#xff0c;它在Ubuntu系统上不能执行&#xff0c;利用file 命令得到的结果为&#xff1a; GraphGen: ELF 32-bit MSB executable, SPARC, version 1 (SYSV), dynamically linked (uses shared libs), not stripped 根据上…

组合数据类型(序列:元组)

序列类型来源于数学概念中的数列&#xff0c;数列是按一定顺序排成一列的一组数&#xff0c;每个数称为这个数列的项&#xff0c;每项不是在其他项之前&#xff0c;就是在其他项之后。存储n项元素的数列{Sn}的定义如下&#xff1a; {Sn}s0,s1,s2,s3,……sn-1 需要注意的是&am…

组合数据类型(序列:列表)

列表是一种序列类型的扩展&#xff0c;十分常用 列表是一种序列类型&#xff0c;创建后可以随意被修改 我们通过代码示例去详细解析列表的有关方法及其实现。 方括号[ ]真正的创建一个列表&#xff0c;赋值仅传递引用 列表的创建&#xff1a; 1.使用[ ]进行创建 [ ]中包括…

【Java】高并发同步Volatile的使用

引言&#xff1a; 在多线程并发编程中synchronized和Volatile都扮演着重要的角色&#xff0c;Volatile是轻量级的Synchronized&#xff0c;它在多处理器开发中保证了共享变量的“可见性”。 可见性的意思是当一个线程修改一个共享变量时&#xff0c;另外一个线程能读到这个…