我是靠谱客的博主 能干衬衫,最近开发中收集的这篇文章主要介绍Fluent python 笔记及代码(2)序列第二章 序列,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

第二章 序列

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)序列第二章 序列所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(58)

评论列表共有 0 条评论

立即
投稿
返回
顶部