龙空技术网

day08-元组tuple和集合set

睿智的南紫 505

前言:

现时朋友们对“java元组类图”可能比较重视,姐妹们都想要学习一些“java元组类图”的相关知识。那么小编同时在网上汇集了一些关于“java元组类图””的相关内容,希望小伙伴们能喜欢,你们一起来学习一下吧!

元组

如果你接触过比较“资深”的编程语言比如:Java、C++、C# 等,学习上一篇的列表可能会感觉好理解一些。

但是Python元组可是一个新的概念,比较“资深”的编程语言里开始是没有元组的。

而它们的写法和用法又与列表十分相似,有时可能傻傻分不清楚。

下面我们介绍一下元组:

元组也是一个容器类的Python数据类型,里面可以存放多个元素。但是声明的方式跟列表是有区别的。

元组的声明使用的符号是: 小括号,我们对比List列表学习一下

所以我们声明一个元组需要按照如下的方式:比如

sports = ()print(type(sports)) # <class 'tuple'>

当然也可以声明有元素的元组

sports = ('足球','篮球','网球','乒乓球','排球')print(sports) print(type(sports))

查看数组的长度是仍然使用:len()函数

sports = ('足球','篮球','网球','乒乓球','排球')print(sports) print(len(sports))

但是有一点需要特别强调,如果元组中只有一个元素,必须是:sports =('足球',),大家有没有发现里面除了元素足球之外,还多了一个逗号,即声明含有一个元素的元组时,必须要加【逗号】。

当然也可以通过索引切片获取里面的元素。

sports = ('足球','篮球','网球','乒乓球','排球')print(sports[1])print(sports[-1])print(sports[3])print(sports[2:])print(sports[:3])print(sports[::2])print(sports[::-1])print(sports[-2::-1])

支持的运算符:

这个跟列表是一样的。

遍历的方式也跟列表的方式是一样的。

sports = ('足球','篮球','网球','乒乓球','排球')for sport in sports:    print(sport)

元组的操作只是支持:index和count,不支持增加、删除和修改元素,所以跟索引相关的方法都没有了。

sports = ('足球','篮球','网球','乒乓球','排球','网球')# 使用index查找元素print(sports.index('足球'))  # 返回找到元素的下标# 使用count获取元素的个数print(sports.count('网球')) # 2 表示个数为2# 但是如果获取的元素是元组中不存在的元素print(sports.index('冰球'))   # ----> 此处是报错的:ValueError: tuple.index(x): x not in tuple

说了这么多,主要是存放一些不可变的元素。后面函数、某些方法方法的返回值也是一个元组。

总之,tuple 放弃了对元素的增删(内存结构设计上变的更精简),换取的是性能上的提升:创建 tuple 比 list 要快,存储空间比 list 占用更小。所以就出现了“能用 tuple 的地方就不用 list”的说法。

我的总结是:如果不会涉及到对元素的操作可以使用元组的,这样访问速度会更快。

集合

集合又是何方神圣?集合也是一个容器类的数据类型。但是有了列表和元组怎么又出现了一个集合?

介绍一下集合的特点:

集合是一个可变容器,就是支持里面元素的变化集合内的数据对象都是唯一的(不能重复)集合是无序的存储结构,集合内的数据没有先后关系集合是可迭代对象集合的底层是字典结构

集合到底长成啥样子呢?定义方式:

空集合:set1 = set()

有元素的集合:set1 ={'足球','篮球','网球','乒乓球','排球' }

可以发现符号发生了变化,再次与列表元组一起对比学习下:

sports ={'足球','篮球','网球','乒乓球','排球','篮球','网球' }print(type(sports))print(len(sports))  #同样适用len()获取长度print(sports) # 注意里面只有一个篮球和网球,即不允许重复元素

集合操作

注意:因为不支持索引,所以索引相关的操作是不存在的。但是集合可以求交集并集、差集、交叉补集

添加元素: set.add()

add():向集合内增加元素,如果添加的元素已经存在的话,则不执行任何操作

sports ={'足球','篮球','网球','乒乓球','排球','篮球','网球' }sports.add('冰球')print(sports)sports.add('篮球')print(sports)

删除集合元素:set.pop() 与 set.remove()

pop(): pop会从集合中随机删除一个数

remove(): 删除指定元素,如果是不存在的元素会报错。

discard(): 与remove()类似,如果是不存在的元素不会报错。

sports ={'足球','篮球','网球','乒乓球','排球','篮球','网球' }sports.pop()  # pop会从集合中随机删除一个数print(sports)sports.remove('篮球')print(sports)sports.remove('冰球')print(sports)

集合的运算操作

交集: 交集可以使用符号:【&】完成。跟数学中的交集是一样的,就是求两个集合中共同都有的元素

sports1 ={'足球','篮球','网球','乒乓球'}sports2= {'乒乓球','排球','篮球','网球','冰球'}print(sports1&sports2)

并集:并集可以使用符号:【|】完成,就是将两个集合并在一起。

sports1 ={'足球','篮球','网球','乒乓球'}sports2= {'乒乓球','排球','篮球','网球','冰球'}print(sports1|sports2)

差集:差集使用符号:【-】完成,就是求当前与另一个集合不同的。

sports1 ={'足球','篮球','网球','乒乓球'}sports2= {'乒乓球','排球','篮球','网球','冰球'}print(sports1-sports2)  # 就是求sports1与sports2不同的是

交叉补集:

理解下交叉补集:集合A 是{1、2、3 },集合B 是 {2、3、4 } . 交叉补集就只保留 1 和 4 。因为 1 是 A 独有的, 4 是B 独有的。交叉补集会去掉共有的部分,只保留双方独有的部分。

现在我们求sports1和sports2的交叉补集,使用符号是:【^】完成。

sports1 ={'足球','篮球','网球','乒乓球'}sports2= {'乒乓球','排球','篮球','网球','冰球'}print(sports1^sports2)  

当然每个符号也有对应的集合函数。

标签: #java元组类图