if __name__ == '__main__':
"""
python中的tuple为另一种有序列表:也称元组,但是tuple一旦初始化就不能被修改,
所以,tuple没有list的append(),insert()的方法,其他获取元素的方法和list是一样的,
但不能复制成另外的元素
---正因为tuple不可变,所以才使代码更安全,如果可能,能用tuple代替list就尽量用tuple
---tuple的陷阱,当你定义一个tuple时,在定义的时候,tuple的元素必须被确定下来
"""
"""
在for循环中,结束for的API有两个
--break,跳出当前整个for循环
--continue,跳出当前这次循环
"""
"""
dict相当于其他语言中的map,使用和map一样的键值对,具有极快的查找速度
--对于查找来说,list越大,查询越慢,因为list需要从第一位开始遍历查询
--对于dict来说,不管dict的长短,查询时间都是一样,
--因为dict时kv对出现的,所以一个k只能对应一个v,如果多次对一个k放入v,那么后面的v值会把前面的值冲掉
--因为dict时kv类型保存,所以如果k不存在,只有v就会报错,
--要避免k不存在的错误,有两种办法
---1、通过in判断k是否存在
>>>‘k值’ in dict_name
---2、通过dict提供的get()方法,如果key不存在,可以返回None,或者自己指定的Value
>>>dict_name('k值') 如果没有就会返回None
>>>dict_name('k值',指定匹配的v值) 先查询,如果没有k值,就会创建这个kv值,v值时自己指定的
---3、删除一个k值
>>>dict_name.pop(k值) 删除k值,对应的v值也会被删除
===dict内部存放的顺序和key放入的顺序时没有关系的
和list比较,dict有以下几个特点:
--1、查找和插入的速度极快,不会随着key的增加而变慢
--2、需要占用大量的内存,内存浪费多
而list相反:
--1、查找和插入的时间随着元素的增加而增加
--2、占用空间小,浪费内存很少
===所以说,dict时用空间来换取时间的一种方法
dict可以用在需要高速查找的很多地方,在python代码中几乎无处不在,正确使用dict非常重要,
===需要牢记第一条就是dict的key必须是不可变对象===
因为dict根据key来计算v的存储位置,如果每次计算相同的key得出的结果不同,那dict内部就完全混乱了,这个通过key计算位置的算法称为哈希算法(Hash)
要保证hash的正确性,作为key的对象就不能变,
在python中字符串,整数等都是不可变的,因此可以放心的作为key,
===而list是可变的,就不能作为key===
"""
"""
set和dict类似,也是一组key的集合,但是不存储value,由于key不能重复,所以在set中,没有重复的key
要创建一个set,需要提供一个list作为输入集合:
>>>s = set([1,2,3])
>>>s
{1,2,3}
注意,传入参数[1,2,3]是一个list,而现实的{1,2,3}只是告诉你这个内部有1,2,3这3个元素,显示的顺序也不表达set是有序的
重复元素在set中自动被过滤:
>>>s = set([1,1,2,3,3])
>>>s
{1,2,3}
通过add(key)方法可以添加元素到set中,可以重复添加,但是不会有效果
通过remove(key)方法可以删除元素
set可以看成数学意义上的无序和无重复元素的集合,因此,两个set可以做数学意义上的交集,并集等操作
>>>s1 = set([1,2,3])
>>>s2 = set([2,3,5])
>>>s1 & s2
{2,3}
>>>s1 | s2
{1,2,3,4}
---set和dict的唯一区别尽在于没有存储对应的value,但是set的原理和dict一样,所以,同样不可以放入可变对象,
以为无法判断两个可变对象是否相等,也就无法保证set内部“不会有重复元素,
"""
"""
===可变对象===
set是不变对象,而list是可变对象
对于可变对象,比如list,对list进行操作,list内部的内容会变化,
"""
从0开始学python----基础篇(list,dict,set,tuple)
最新推荐文章于 2023-09-09 14:28:05 发布