概述
第二章 序列
python的序列可以根据可变和不可变分为 可变序列 不可变序列
可变序列:
list、bytearray、array.array、collections.deque 和 memoryview等
不可变序列:
tuple、str 和 bytes等
还可以根据可存放元素的类型是否一致分为扁平序列和容器序列
容器序列:
可以存放不同数据类型的序列,且存放的是对像的引用
list、tuple 和 collections.deque
扁平序列 :
只能存放一种类型的数据且存放的是值而不是引用,扁平序列其实是一段连续的内存空间。
str、bytes、bytearray、memoryview 和 array.array
列表推导和生成器表达式
生成器表达式()会逐个产生元素而不是和列表推导一样一次性生成,因此在一些情况下它更省内存
拆包
可以应用于所有可迭代对象
可以用*来拆分可迭代对象,并将其作为参数传入函数,也可以接受返回值
切片操作
切片操作实际上调用的是__ getitem __(slice(start,stop,step))
slice是python的一个切片对象
增量赋值
如+=的背后是__ iadd __()如果对象不可变才会调用 __ add __ ()
如果在元组中存在可变对象
如t=(1,2,[3,4])
执行t[2]+=[5,6]时 会报错但t也会被成功修改
因此最好在元组中不要存放可变对象,另外可以看出增量赋值不是原子性的操作
排序
list.sort 方法原地修改
sorted 方法产生新的列表,不管传入的是什么类型的序列
它们有共同的关键字:reserve 默认False 升序
key 一个只有一个参数的函数,根据函数的返回值进行排序
bisect模块
包含两个主要函数 bisect和insort 都是使用二分法在有序序列中查找和插入元素
数组
如果是对数字的处理,数组会更加高效,因为数组存储的是数字的机器翻译
memoryview
memoryview是一个内置类,它能让用户在不复制内容的情况下操作同一个数组的不同切片。
最后
以上就是能干衬衫为你收集整理的Fluent python 笔记及代码(2)序列第二章 序列的全部内容,希望文章能够帮你解决Fluent python 笔记及代码(2)序列第二章 序列所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复