百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

外婆都能学会的Python教程(十四):Python集合类型(一)

bigegpt 2024-12-31 09:32 6 浏览

前言

Python是一个非常容易上手的编程语言,它的语法简单,而且功能强大,非常适合初学者学习,它的语法规则非常简单,只要按照规则写出代码,Python解释器就可以执行。

下面是Python的入门教程集合类型的例子,太简单了,外婆看完都学会了,你也来看看吧!

集合类型的定义

  • 集合是多个元素的无序组合,与数学中的集合概念一致,相当于java中的set。
  • 集合类型的特点集合中元素是无序的,每个元素必须是唯一的,不能重复集合中的元素必须是不可变的,不能修改,如果修改了有可能会和其他元素相同。
  • 集合用{}表示,元素之间用逗号分隔建立集合类型用{}或set(),如果用{}建立集合,如果集合中只有一个元素,必须在元素后面加逗号。
  • 空集合只能用set()建立,不能用{}集合中的元素没有顺序,不能通过下标访问元素。
  • 代码演示
A = {"python", 123, ("python", 123)} # 建立集合 
print(A) # {'python', 123, ('python', 123)} 
B = set("pypy123") # 建立集合 
print(B) # {'p', 'y', '1', '2', '3'} # 集合中的元素是无序的,不重复的

集合应用场景

  • 包含关系比较
  • 数据去重
  • 数据交集、差集、并集、补集等运算

集合类型的操作

  • 成员关系操作符:in、not in
  • 集合运算操作符:|、&、-、^
    • S|T 并集:返回一个新集合,包含在集合S和T中所有元素
    • S&T 交集:返回一个新集合,包含同时在S和T两个集合中出现的元素
    • S-T 差集:返回一个新集合,包含在S集合中出现但不在T集合中出现的元素
    • S^T 补集:返回一个新集合,包含集合S和T中的非相同元素
    • S<=T 或 S<T 判断S和T的子集关系,返回True/False
    • S>=T 或 S>T 判断S和T的包含关系,返回True/False
  • 四个增强操作
    • S|=T 或 S.update(T):将T中的元素添加到S中
    • S&=T 或 S.intersection_update(T):将S中的元素与T中的元素更新到S中
    • S-=T 或 S.difference_update(T):将S中的元素与T中的元素差集更新到S中
    • S^=T 或 S.symmetric_difference_update(T):将S中的元素与T中的元素补集更新到S中
  • 实例演示
A = {'p', 'y', 123}
B = set("pypy123") # {'p', 'y', '1', '2', '3'}
print(A|B)  # {'p', 'y', 123, '1', '2', '3'}
print(A&B)  # {'p', 'y'}
print(A-B)  # {123}
print(A^B)  # {'1', '2', '3', 123}
print(A<=B)  # False
print(A<B)  # False
A.add('x')  # 添加元素
print(A)  # {'x', 123, 'p', 'y'}
  • 集合类型的内置函数或方法
    • len(s):返回集合s的长度
    • max(s):返回集合s中元素最大值
    • min(s):返回集合s中元素最小值
    • set(seq):将其他类型的序列转换成集合类型
    • s.add(x):如果x不在集合s中,将x增加到s
    • s.clear():删除集合s中的所有元素
    • s.copy():返回集合s的一个副本
    • s.difference(t):返回集合s中有而集合t中没有的元素组成的新集合
    • s.difference_update(t):返回集合s中有而集合t中没有的元素组成的新集合
    • s.discard(x):如果x在集合s中,将x从s中删除
    • s.intersection(t):返回集合s和t中共同元素组成的新集合
    • s.intersection_update(t):返回集合s和t中共同元素组成的新集合
    • s.isdisjoint(t):判断集合s和t是否不相交,如果不相交返回True,否则返回False
    • s.issubset(t):判断集合s是否为集合t的子集,如果是返回True,否则返回False
    • s.issuperset(t):判断集合s是否为集合t的超集,如果是返回True,否则返回False
    • s.pop():从集合s中随机删除一个元素,并返回该元素
    • s.remove(x):从集合s中删除元素x,如果x不存在,抛出KeyError异常
    • s.symmetric_difference(t):返回集合s和t中不重复的元素组成的
  • for循环遍历集合
A = {'p', 'y', 123} 
for item in A: 
	print(item)
  • while循环遍历集合
try: 
	while True: 
		print(A.pop(), end='') 
except: 
	pass

序列类型

  • 序列类型是Python中最基本的数据结构,具有先后关系的一组元素。
  • 序列中的每个元素都有编号,即元素的位置,也称为索引,第一个元素的索引为0,第二个元素的索引为1,以此类推。
  • 序列类型包括字符串、列表、元组、range对象、bytes对象和bytearray对象。

序列类型的通及操作

  • 成员关系操作符:in、not inx in s:如果x是序列s的元素,返回True,否则返回Falsex not in s:如果x不是序列s的元素,返回True,否则返回False
  • 序列连接操作符:+,意思是将两个序列连接成一个序列
  • 序列重复操作符:*,意思是将序列重复n次,生成一个新的序列
  • 切片操作符:[start:end:step],意思是从序列中获取第start到end-1个元素,每step个取一个元素
  • 例子
ls = ["python", 123, "abc"] 
print("python" in ls) # True, 判断python是否在列表中 
print("python" not in ls) # False, 判断python是否不在列表中 
print(ls + [456]) # ['python', 123, 'abc', 456], 连接列表 
print(ls * 2) # ['python', 123, 'abc', 'python', 123, 'abc'], 列表重复2次 
print(ls[1:]) # [123, 'abc'], 列表切片

序列类型的内置函数

  • len(s):返回序列s的长度
  • max(s):返回序列s中元素最大值,其中元素必须是同一类型,并且可比较
  • min(s):返回序列s中元素最小值,其中元素必须是同一类型,并且可比较
  • seq(seq):将其他类型的序列转换成序列类型
  • list(seq):将其他类型的序列转换成列表类型
  • tuple(seq):将其他类型的序列转换成元组类型
  • str(seq):将其他类型的序列转换成字符串类型
  • bytes(seq):将其他类型的序列转换成bytes类型
  • bytearray(seq):将其他类型的序列转换成bytearray类型
  • range(start, stop[, step]):创建一个range对象,一般用于for循环中
  • reversed(seq):反向序列中的元素,返回一个迭代器
  • sorted(seq):对序列进行排序,返回一个新的序列
  • zip(seq1, seq2, ...):将序列seq1, seq2, ...中对应的元素打包成一个元组,返回一个zip对象
  • filter(function, seq):过滤掉不符合条件的元素,返回一个filter对象
  • map(function, seq):根据提供的函数对指定序列做映射,返回一个map对象
  • reduce(function, seq):对参数序列中元素进行累积,返回一个值
  • index(x[, start[, end]]):从序列中找出某个值第一个匹配项的索引位置
  • count(x):统计某个元素在序列中出现的次数
  • 例子
ls = ["python", 123, "abc"] 
print(len(ls)) # 3, 列表长度 
print(max(ls)) # TypeError: '>' not supported between instances of 'int' and 'str', 列表中元素类型不一致,不能比较大小 
print(min(ls)) # TypeError: '<' not supported between instances of 'int' and 'str', 列表中元素类型不一致,不能比较大小 
print(list(ls)) # ['python', 123, 'abc'], 将列表转换成列表 
print(tuple(ls)) # ('python', 123, 'abc'), 将列表转换成元组 
print(str(ls)) # ['python', 123, 'abc'], 将列表转换成字符串 
print(bytes(ls)) # TypeError: 'str' object cannot be interpreted as an integer, 字符串不能转换成bytes 
print(bytearray(ls)) # TypeError: 'str' object cannot be interpreted as an integer, 字符串不能转换成bytearray 
print(range(10)) # range(0, 10), 创建一个range对象 
print(reversed(ls)) # <list_reverseiterator object at 0x000001F3F3F4F7C0>, 反向序列中的元素,返回一个迭代器 
print(sorted(ls)) # TypeError: '<' not supported between instances of 'int' and 'str', 列表中元素类型不一致,不能比较大小 
print(zip(ls, [1, 2, 3])) # <zip object at 0x000001F3F3F4F700>, 将列表中元素和[1, 2, 3]中元素打包成元组 
print(filter(lambda x: x == "python", ls)) # <filter object at 0x000001F3F3F4F7C0>, 过滤掉不符合条件的元素,返回一个filter对象 
print(map(lambda x: x == "python", ls)) # <map object at 0x000001F3F3F4F7C0>, 根据提供的函数对指定序列做映射,返回一个map对象 
print(ls.index("python")) # 0, 从序列中找出某个值第一个匹配项的索引位置 
print(ls.count("python")) # 1, 统计某个元素在序列中出现的次数

结束寄语

Python中的集合类型在日常开发中使用非常频繁,掌握集合的使用在编程中会让你事半功倍。

恭喜你看完这篇Python教程,你已经超过99%的人了,关注我带你快速入门Python,提高工作效率!


喜欢就关注我给我点个赞吧,精彩内容会第一时间推送给你[心][谢谢]。

有问题可以回复或私信我,看到我会给你耐心解答[给力]!

相关推荐

为3D手游打造, Visual Studio Unity扩展下载

IT之家(www.ithome.com):为3D手游打造,VisualStudioUnity扩展下载7月30日消息,微软正式发布升级版VisualStudioToolsforUnity扩...

由ArcMap属性字段自增引出字段计算器使用Python的技巧

1.前言前些日子有人问我ArcMap中要让某个字段的值实现自增有什么方法?我首先想到像SQLServer中对于数值型字段可以设置自增。所以我打开ArcCatalog查看发现只提供默认值,没办法只能看...

微软首次回答 HoloLens 相关问题,终于爆料了

fengo2015/04/2115:11注:本文作者张静是NVIDIAGPU架构师,微信公众号“黑客与画家”(HackerAndPainter),知乎专栏地址。欢迎各位童鞋与他交流探讨。...

C#指针的应用(c#指针类型)

C#在有限的范围内支持指针。C#的指针只不过是一个持有另一类型内存地址的变量。但是在C#中,指针只能被声明为持有值类型和数组的内存地址。与引用类型不同,指针类型不被默认的垃圾收集机制所跟踪。出于同...

C# 堆栈(Stack)(c# 堆栈中定位调用messagebox 的地方)

C#集合在C#中,堆栈(Stack)是一种后进先出(LIFO,LastInFirstOut)的数据结构。堆栈(Stack)适用于存储和按顺序处理数据,其中最新添加的元素会最先被移除。堆...

欢迎回来:Fortran意外重回流行编程语言20强榜单

TIOBE指数是用来确定一种编程语言受欢迎程度的指标之一。它并不表明哪种编程语言是最好的,也不表明哪种编程语言写的代码行数最多,而是利用在谷歌、维基百科、必应、亚马逊、YouTube等各种引擎和网站上...

C#+NET MAUI实现跨平台/终端(linux,win,ios等)解决方案

简介.NETMulti-platformAppUI(.NETMAUI)是一个跨平台的框架,用于使用C#和XAML创建移动和桌面应用程序。使用.NETMAUI,您可以用一套代码库开发可以在A...

C#代码安全红线:SQL注入防护终极方案,让你的系统固若金汤

在数字化时代,应用系统的安全性至关重要。而SQL注入攻击,长期盘踞在OWASP(OpenWebApplicationSecurityProject)漏洞榜单的前列,成为众多基于数据库的应用系统...

C# (一)状态机模式(状态机代码实现)

最近空闲,炒炒隔夜饭,以前这些模式在自己项目种应用过不少,但一直没有像别人那样写一个系列,最近年纪大了,很多东西都忘记了,特别AI的兴起,更少写代码了,反正没什么事情,自己在重写一遍吧。创建型模式(5...

C# 中 Predicate 详解(c#中的replace)

Predicate泛型委托:表示定义一组条件并确定指定对象是否符合这些条件的方法。此委托由Array和List类的几种方法使用,用于在集合中搜索元素。Predicate<T>...

C#中$的用法?(c#中&&什么意思)

文章来自AI问答。在C#中,$符号用于字符串插值(StringInterpolation)。字符串插值是C#6.0引入的一种特性,它允许你在字符串中直接嵌入表达式,而不需要使用string.For...

C#并行编程:Parallel类(c# 并行处理)

在Parallel类中提供了三个静态方法作为结构化并行的基本形式:Parallel.Invoke方法:并行执行一组委托。Parallel.For方法:执行与C#for循环等价的并行方法。Parall...

颠覆认知!用Span重构foreach循环竟让数据处理快如闪电

在C#编程的世界里,数据处理效率始终是开发者们关注的焦点。随着项目规模的扩大和数据量的激增,哪怕是细微的性能提升,都可能对整个应用的响应速度和用户体验产生深远影响。近年来,C#引入的Span<T...

Unity3D手游开发实践《腾讯桌球》客户端开发经验总结

本次分享总结,起源于腾讯桌球项目,但是不仅仅限于项目本身。虽然基于Unity3D,很多东西同样适用于Cocos。本文从以下10大点进行阐述:1.架构设计2.原生插件/平台交互3.版本与补丁4.用脚本,...

.NET 7 AOT 的使用以及 .NET 与 Go 互相调用

目录背景C#部分环境要求创建一个控制台项目体验AOT编译C#调用库函数减少体积C#导出函数C#调用C#生成的AOTGolang部分安装GCCGolang导出函数.NETC#...