流畅的python和cookbook学习笔记

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了流畅的python和cookbook学习笔记相关的知识,希望对你有一定的参考价值。

1.数据结构

1.1 内置序列类型

  四种序列类型:

  1.容器序列:list、tuple和collections.deque

  2.扁平序列:str、bytes、bytearray、memoryview和array.array

  3.可变序列:list、bytearray、array.array、collections.deque 和 memoryview

  4.不可变序列:tuple、str 和 bytes

1.2 列表推导

  1.列表推导(list comprehension):列表推导是构建列表(list)的快捷方式,简洁的写法。

  列表推导的作用只有一个:生成列表。

>>> symbols = $¢£¥€¤ 
>>> codes = [ord(symbol) for symbol in symbols] # 用方括号括起来,内部用for循环生成多个值
>>> codes
[36, 162, 163, 165, 8364, 164]

  2.表达式内部的变量和赋值只在局部起作用,表达式的上下文里的同名变量还可以被正常引用,局部变量并不会影响到它们。

>>> x = ABC 
>>> dummy = [ord(x) for x in x] 
>>> x 
ABC 
>>> dummy  
[65, 66, 67]

  即 x 的值不会被列表推导中的循环中的 x 值所影响。

1.3 生成器表达式

  1.生成式表达器(generator expression):生成器表达式遵守了迭代器协议,可以逐个地产出元素,而不是先建立一个完整的列表,然后再把这个列表传递到某个构造函数里。这样更节省内存。

  生成器表达式的语法跟列表推导差不多,只不过把方括号换成圆括号而已。

  用生成器表达式初始化元组和数组:

>>> symbols = $¢£¥€¤ # 初始化元组
>>> tuple(ord(symbol) for symbol in symbols) # 如果生成器表达式是一个函数调用过程中的唯一参数,那么不需要额外再用括号把它围起来。
(36, 162, 163, 165, 8364, 164) 
>>> import array # 初始化数组
>>> array.array(I, (ord(symbol) for symbol in symbols)) # array 的构造方法需要两个参数,因此括号是必需的。array 构造方法的第一个参数,即(‘I‘)指定了数组中数字的存储方式。
array(I, [36, 162, 163, 165, 8364, 164])

1.4 笛卡尔积 

  笛卡儿积是一个列表,列表里的元素是由输入的可迭代类型的元素对构成的元组,因此笛卡儿积列表的长度等于输入变量的长度的乘积。

  1.使用列表推导计算笛卡儿积

>>> colors = [black, white] 
>>> sizes = [S, M, L] 
>>> tshirts = [(color, size) for color in colors for size in sizes] 
>>> tshirts 
[(black, S), (black, M), (black, L), (white, S), (white, M), (white, L)] >>> for color in colors: # 使用for循环是一样的效果 ... for size in sizes: ... print((color, size)) ... (black, S) (black, M) (black, L) (white, S) (white, M) (white, L) >>> tshirts = [(color, size) for size in sizes for color in colors] # 改变参数位置,输出顺序不同 >>> tshirts [(black, S), (white, S), (black, M), (white, M), (black, L), (white, L)]

  2.使用生成器表达式计算笛卡儿积

>>> colors = [black, white]
>>> sizes = [S, M, L]
>>> for tshirt in ({} {}.format(c, s) for c in colors for s in sizes):
...     print(tshirt)
...
black S
black M
black L
white S
white M
white L

 


以上是关于流畅的python和cookbook学习笔记的主要内容,如果未能解决你的问题,请参考以下文章

流畅的python和cookbook学习笔记

流畅的python和cookbook学习笔记

流畅的python和cookbook学习笔记

流畅的python和cookbook学习笔记

Python Cookbook学习笔记

python cookbook第三版学习笔记九:函数