容器类型"/>
Python中的容器类型
一、基础知识
1、在进行函数调用时,传递的不是变量的值或者引用,而是变量所指对象的引用。
2、Python内置类型分为可变和不可变类型两种,可变性会影响一些操作的行为,比如+=
。
3、对于可变类型,必要时对其进行拷贝操作,能够避免产生意料之外的影响。
4、常见的拷贝方式:copy.copy
、推导式、切片操作。
5、使用copy.deepcopy
可以进行深拷贝操作。
二、列表与元组
1、使用enumerate
可以在遍历列表的同时获取下标。
2、函数的多返回值实际上是一个元组。
3、不存在元组推导式,但可以使用tuple()
来将生成器表达式换为元组。
4、元组经常用来表示一些结构化的数据。
三、字典与集合
1、在Python3.7版本前,字典是无序的,之后变为保留数据的插入顺序。
2、使用OrderDict
可以在Python3.7之前的版本里获得有序字典。
3、只有可哈希(hashable) 的对象才能存入集合,或者作为字典的键使用。
4、使用有序字典OrderDict
可以快速实现有序去重。
5、使用fronzenset
可以获得一个不可变的集合对象。
6、集合可以方便进行集合运算,计算交集、并集等。
四、代码可读性
1、具名元组比普通元组可读性更强。
2、列表推导式可以更快速地完成遍历、过滤、处理以及构建新列表操作。
3、不要编写过于复杂的推导式,用朴实的代码替换即可。
4、不要把推导式当做代码量更少的循环,写普通循环即可。
五、代码可维护性技巧
1、当访问的字典键不存在时,可以选择捕获异常或先做判断,优先推荐捕获异常。
2、使用get
、setdefault
、带参数的pop
方法可以简化边界处理逻辑。
3、使用具名元组作为返回值,比普通元组更好扩展。
4、当字典键不存在时,使用defaultdict
可以简化处理。
5、用生成器按需返回成员,比直接返回一个结果列表更加灵活,也更省内存。
6、使用动态解包语法可以方便的合并字典。
7、不要在遍历列表的同时修改,否则会出现不可预期的结果。
六、代码性能要点
1、列表的底层实现决定了它的头部操作很慢,deque
类型则没有这个问题。
2、当需要判断某个成员在容器中是否存在时,使用字典或集合更快。
更多推荐
Python中的容器类型
发布评论