每天5分钟玩转Python(07) - 基本数据类型(下)
继续上一篇的数据结构讲解,这篇讲解Set(集合)和Dictionary(字典)的使用方法。
Set(集合)
大家都知道数学中集合的定义为:将数个对象归类而分成为一个或数个形态各异的大小整体。 一个集合中,任何两个元素都认为是不相同的,即每个元素只能出现一次。
Python中通过内置函数set()可获取到集合这种数据类型。参数可以是一个list
1 | s = set([1, 2, 3]) |
通过add(key)方法可以添加元素到set中,可以重复添加,但不会有效果:
1 | s.add(4) |
通过remove(key)方法可以删除元素:
1 | s.remove(4) |
既然是集合,那么就应该支持数学上的集合运算。两个set可以做数学意义上的交集、并集、差集、异或集等操作:
1 | s1 = set([1, 2, 3]) |
有一点要注意的是,set里面是不能放入可变对象的。因为无法判断两个可变对象是否相等,也就无法保证set内部”不会有重复元素”。 比如往set里面添加list就会报错,而添加str类型的就正常。
Dictionary(字典)
字典就是一个键值对的数据结构,这个在编程中非常常见。比如通过学号对应一个学生, 那么学号可以作为key,而学生信息作为value。
Python内置了字典的支持,初始化一个字典对象很简单。
1 | d = {} #初始化一个空的字典 |
添加新的键值对也非常简单:
1 | d['1003'] = '王五' |
由于一个key只能对应一个value,所以,多次对一个key放入value, 后面的值会把前面的值冲掉,这时候就是相当于更新这个键值对了:
1 | d['1003'] = '赵六' |
如果访问字典的时候key不存在,dict就会报错:
1 | print(d['9999']) |
报错:
1 | Traceback (most recent call last): |
要避免key不存在的错误,有两种办法。
第一种是在访问字典之前,先通过in判断key是否存在,如果存在再访问:
1 | if '9999' in d: |
第二种是调用dict提供的get()方法,传入一个默认值。如果key不存在则返回默认值
1 | print(d.get('9999', 'default')) |
要从字典中删除一个key,可以使用pop()
方法,对应的key/value对也会从dict中删除:
1 | print(d) |
输出结果:
1 | {'1001': '张三', '1002': '李四'} |
还有一点需要注意的是,dict内部存放的顺序和key放入的顺序是没有关系的。并且dict中的key跟集合一样必须是不可变对象。
可变和不可变对象
上面讲到集合和字典的时候都提到了可变对象、不可变对象。那么这两者到底有啥区别。 其实从字面含义上就已经很容易理解,不可变对象就是只对象一旦初始化后,其状态或内容都不允许发生改变了。 而不可变对象随时都可以改变状态和内容。
比如字符串str类型就是不可变对象,而列表list类型就是可变对象。
1 | str1 = '123456' |
输出如下
1 | 123456 |
可以看到,变量str1指向的对象内容始终是123456
。即使在上面进行了一次替换操作,
这次替换操作会返回一个新的str对象。而列表list对象在对它进行操作后,内容以及改变了。
对于不变对象来说,调用对象自身的任意方法,也不会改变该对象自身的内容。一般来讲这些方法会创建新的对象并返回, 这样,就保证了不可变对象本身永远是不可变的。
OK,关于Python基本数据类型介绍到这里。喝杯小酒歇会吧!