Fluent Python读书笔记(三)
来源:互联网 发布:萧涵seo 编辑:程序博客网 时间:2024/06/06 16:27
内置序列类型
容器序列
list、tuple和collections.deque这些序列可以存放不同类型的数据。存放的是它们所包含的任意类型的对象的引用。
扁平序列
str、bytes、bytearray、memoryview和array.array,这类序列只能容纳一种类型。存放的是值而不是引用,扁平序列其实是一段连续的内存空间,所以它更加紧凑,但它里面只能存放诸如字符、字节和数值这种基础类型。
可变序列
list、bytearray、array.array、collections.deque和memoryview。
不可变序列
tuple、str和bytes
MutableSequence是可变序列,Sequence是不可变序列,从图中可以看出两者的差异,也能看到可变序列从不可变序列那里继承了一些方法。
列表推导和生成器表达式
列表推导:构建列表的快捷方式
生成器表达式:可以用来创建其他任何类型的序列
列表推导
原则是只用列表推导来创建新的列表,并且尽量保持简短
symbols = '!@#$%^'codes=[ord(symbol) for symbol in symbols]print codes[33, 64, 35, 36, 37, 94]
笛卡尔积
一个列表,3种不同尺寸的T恤衫,每个尺寸有2个颜色
colors=['black','white']sizes=['S','M','L']tshirts=[(color,size) for color in colors for size in sizes]print tshirts[('black', 'S'), ('black', 'M'), ('black', 'L'), ('white', 'S'), ('white', 'M'), ('white', 'L')]
- 得到的结果先以颜色排列,再以尺码排列
- 循环嵌套关系先color在size外层
生成器表达式
使用生成器表达式建立元组和数组
symbols = '!@#$%^'tucodes=tuple(ord(symbol) for symbol in symbols)print tucodes(33, 64, 35, 36, 37, 94)import arrayarcodes=array.array('I',(ord(symbol) for symbol in symbols))print arcodesarray('I', [33L, 64L, 35L, 36L, 37L, 94L])
- 如果生成器表达式是一个函数调用过程中的唯一参数,那么不需要额外再用括号把它围起来
- array的构造方法需要两个参数,因此括号是必须的。第一参数’I’指定了数组中数字的存储方式
使用生成器表达式计算笛卡尔积
for tshirt in ('%s %s' % (c,s) for c in colors for s in sizes): print tshirtblack Sblack Mblack Lwhite Swhite Mwhite L
内存中不会留下一个有6个组合的列表,生成器表达式会在每次for循环运行时才生成一个组合。
阅读全文
0 0
- Fluent Python读书笔记(三)
- fluent python读书笔记
- Fluent Python读书笔记(一)
- Fluent Python读书笔记(二)
- fluent python 读书笔记(第一章)
- Fluent Python笔记三
- Fluent Python 笔记一
- Fluent Python笔记二
- Fluent Python 笔记四
- Fluent Python读后感
- Fluent Python笔记
- python读书笔记(三)
- 读书笔记 -《Python 黑帽子》 ( 三 )
- Fluent NHibernate之旅(三)-- 继承
- Fluent中三种数值算法
- 《Fluent Python》学习笔记chapter 8
- 【2017/6】《流畅的Python》 (fluent python) 笔记
- 《Fluent Python》学习笔记 chpter7函数装饰器
- constract制作的小游戏
- Android Studio Jni开发(三)Native方法动态注册
- pyhon 安装第一个模块 xlrd
- 欢迎使用CSDN-markdown编辑器
- java基础3:io流对象之File对象(上)
- Fluent Python读书笔记(三)
- Java 并发工具包-BlockingQueue-DelayQueue
- 在EC2上创建root用户,并使用root用户登录
- Maximum Length of Repeated Subarray
- babyos2(9)——系统调用
- 一个架构师谈什么是架构以及怎么成为一个架构师
- javascript 32位以内进制转换
- 独自闯荡上海,面试总结1
- 软件架构师知识点1