相对于前面介绍的几种数据类型,元组、集合的内容相对较少,所以就放在一块来介绍:
元组
元组(tuple)是由任意类型元素组成的序列,这一点和列表类似,但不同点在于元组是不可变的。
元组的创建是使用 () 来创建的,()空元组是最简单的元组,当创建包含一个或多个元组时,每一个元素后面都需要跟上一个逗号,其实在创建非空元组时,是不需要括号的,但是网上的很多资料教程中都默认在创建元组时直接输入括号,然后在括号中添加元素,下面的例子可以看到
>>> tuple_1 = () #空元组
>>> type(tuple_1) #判断类型确实为元组
>>> tuple_2 = 'Jack',{'name':'Tom'},4,['apple','banana']
>>> tuple_2
('Jack', {'name': 'Tom'}, 4, ['apple', 'banana'])
>>> type(tuple_2)
在tuple_2的创建过程中,并没有使用小括号,也可创建成功。当然,大家在创建时尽量还是加上括号,这样会比较美观便于代码阅读;而且当元素较多时,最后一个元素后可以不用添加逗号。
再重点说一下元组在操作上与列表的一些不同,也就是一些在列表中的方法或者函数在元组中是不通用的:
元组一旦被建立就不可再改变,因此就无法再进行元素的增加、删除、修改等一些基本的操作,如果需要改变,那就只能重新赋值或者定义新的元组了。
元组在实际的编程中用的比较少,内容不是太多,元组其他的的操作可以对比着列表来练习
集合
上面介绍的元组可以理解为是特殊的只可读的列表
而集合(set)可以看做是特殊的字典,字典中的键值对是无序的,集合中的元素同样也是无序的,也就无法使用位置索引的方法了;字典中的键是不允许重复出现的,集合中的元素也是唯一的不可重复的。
集合是通过 {} 来进行创建的,但是 直接创建 空{} 并不表示集合,而是表示的最简单的字典,为什么会出现这种情况呢?因为字典出现的早,向来来得早的都是有位置有身份的正室,小编也是很无奈啊,所以这一点是需要注意的。
问题来了,既然 空{} 表示的是空字典,那么空集合该如何建立呢?
>>> msg = {} #表示的是空元组
>>> type(msg)
>>> empty_set = set()
>>> type(empty_set)
如上所示:创建空集合时,需要用set()函数来标明
常见的集合操作:
集合的交集运算,有两种方法
>>> a = {1,2,3}
>>> b = {3,4,5}
>>> a & b #特殊标点符号&
{3}
>>> a.intersection(b) #集合函数 intersection()
{3}
集合的并集运算
>>> a | b #特殊符号|
{1, 2, 3, 4, 5}
>>> a.union(b) #函数union()
{1, 2, 3, 4, 5}
注意:上述两种运算的结果是不受先后运算顺序影响的
集合的差集运算
>>> a - b #运算符号 -
{1, 2}
>>> b - a
{4, 5}
>>> a.difference(b) #函数difference()
{1, 2}
>>> b.difference(a)
{4, 5}
可以看出,结果是受先后运算顺序影响的
判断仅在两个集合中出现一次:
>>> a ^ b #特殊符号^
{1, 2, 4, 5}
>>> a.symmetric_difference(b) #函数
{1, 2, 4, 5}