所有笔记内容参考廖雪峰官网,需要详细了解大家可以去这个网站,我这里主要做笔记方便自己复习
dict
Python中内置了字典:dict的支持,全称为dict,类似于java中的map,使用键值对的形式存储,具有非常快的查找速度,例如根据名字查找对应的成绩:
d={'A':99,'B':64,'C':55}
print(d['A'])
①我们可以使用类似与d[‘A’]=55的语句修改对应键的值
②如果在dict中找不到对应的键,那么会报错,可以使用类似于‘A’in d进行判断,语句返回的是一个bool值;第二种就是可以通过dict提供的get()方法,如果key不存在,可以返回None,或者自己指定的value,如d.get(‘D’)或者d.get(“D”,66)
③要删除一个key,用pop(key)方法,对应的value也会从dict中删除:
如:
d.pop('C')
执行语句之后d变为d={‘A’:99,’B’:64}
与list比较,dict的特点:
- 查找和插入的速度极快,不会随着key的增加而变慢;
- 需要占用大量的内存,内存浪费多。
而list相反:
- 查找和插入的时间随着元素的增加而增加;
- 占用空间小,浪费内存很少。
所以,dict是用空间来换取时间的一种方法。注意dict中的key必须是不可变对象,通过key计算位置的算法成为哈希算法
set
set与dict相似,也是一组key的集合,但是不存储value。由于key不能重复,所以在set中,没有重复的key
要创建一个set,需要提供一个list作为输入集合:
例如
s=set([1,2,3])
注意:在set中的这个list如果其中含有重复的元素,那么得到的最终结果会去重,也就是说
s=set([1,1,2,2,3,3])
最终s={1,2,3}
add(key)
:将key这个值添加至set中,可以重复添加,但是不会产生任何效果,因为上面讲到会去重
例如:s.add(5)
remove(key)
:将key这个值在set中去除 例如:s.remove(4)
注意:set可以看成是数学意义上的集合,所以两个set可以做交并集等操作。
下面是说的是不可变对象,我不知道这里插这么一个知识是什么意思,但是了解了解总是好的。
不可变对象
str是不变对象,而list是可变对象
对于可变对象,例如list,对list进行操作,list内部的内容是会发生变化的,例如下面代码:
a=['c,'a','b']
a.sort() #其中sort是用来对list中的元素进行排序的(自我理解)
#完成上面的语句之后,a变为['a','b','c']
那么对于不可变对象来说,比如:
a='abc'
a.replace('a','A')
#完成上面之后,a还是'abc'
这里,字符串有一个replace方法,但是变量a最终还会是’abc’,然而,
a = 'abc'
b = a.replace('a', 'A')
#这是b的值会是'Abc'
a是变量,‘abc’才是字符串对象,变量a的是指向‘abc’这个对象的,而字符串对象是不会发生改变的,所以不会发生改变,但是当我们用另一个变量去接收改变之后的字符串对象,我们还是可以获取到那个改变的值
注意:对于不变对象来说,调用对象自身的任意方法,也不会改变对象自身的内容,相反,这些方法会创建新的对象并返回,这样就保证了不可变对象本身是永远不可变的。