元组
元组和列表是非常相似的,有一种类似近亲的关系,也就是说列表中很多操作同样适用于元组,比如索引、切片等等,但也有一部分不同,这里主要来说一下元组的特别之处。
首先元组又被称作带锁的列表,就是元组内的元素是不能随意更改的,比如你不能给元组中的一个元素随意赋值。
In [2]: tuple1 = (1,2,3) In [3]: tuple1[2] = 4 #会发生报错,告诉你不支持这样的操作 TypeError: 'tuple' object does not support item assignment
元组的标志并不是单纯的小括号,而是逗号,或者小括号与逗号的结合,看下面这个例子。
In [31]: tuple2 = (1) In [32]: type(tuple2) Out[32]: int In [33]: tuple3 = (1,) In [34]: type(tuple3) Out[34]: tuple In [35]: tuple4 = 1,2, In [36]: type(tuple4) Out[36]: tuple
那如何初始化一个空元组呢?
In [39]: tuple5 = () In [40]: type(tuple5) Out[40]: tuple
上面刚刚说过元组是不可变对象,自然也不会有append、insert、pop这类的操作。元组中增添可以利用"+"实现,删除则可以利用del,因为这是python自带的回收机制。
In [42]: tuple5 = tuple5[:] + (1,2,3,4,) In [43]: tuple5 Out[47]: (1, 2, 3, 4) In [50]: del tuple5 #不支持切片 In [51]: tuple5 NameError: name 'tuple5' is not defined
"*"在数值型之间为乘积运算符,而在列表和元组之间可以表示为重复运算符。
In [53]: tuple5 = (1,2) In [54]: tuple5 * 3 Out[54]: (1, 2, 1, 2, 1, 2)
集合
集合是一个无序不重复元素的集。基本功能包括关系测试和消除重复元素。集合对象还支持联合、交、差和对称差集等数学运算。
首先可以利用大括号或set()函数创建集合,如果想要创建空集合,你必须使用set()而不是{},{}用来创建字典。
In [57]: set1 = set() In [58]: type(set1) Out[58]: set
集合会本身会带有去重功能。
In [55]: set1 = {1,1,2,2,3,3,4} In [56]: set1 Out[56]: {1, 2, 3, 4}
将集合转化为列表时,会自动排序。
In [74]: set2 = {5,5,4,2,2,0} In [75]: list_ = list(set2) In [76]: list_ Out[76]: [0, 2, 4, 5]
集合之间的一些运算操作。
In [60]: set1 = {1,2,3,4} In [61]: set2 = {3,4,5} #差 In [62]: set1 - set2 Out[62]: {1, 2} #并 In [63]: set1 | set2 Out[63]: {1, 2, 3, 4, 5} #交 In [64]: set1 & set2 Out[64]: {3, 4} #只在set1或只在set2中 In [65]: set1 ^ set2 Out[65]: {1, 2, 5}
利用add向集合中增添元素,利用remove删除元素。
In [69]: set1 = {1,2,3} In [70]: set1.add(5) In [71]: set1 Out[71]: {1, 2, 3, 5} In [72]: set1.remove(2) In [73]: set1 Out[73]: {1, 3, 5}