Python教程
- 5.1 列表详解
- 5.1.3 列表推导式
- 5.1.4 嵌套的列表推导式
- 5.7 深入条件控制
- 6.1 模块详解
- 6.3 dir()
- 7.1 格式化字符串字面值
- 7.1.3 手动格式化字符串
- 7.2 读写文件
5.1 列表详解
- Python 中所有可变数据结构返回值为None。
- 实现队列最好用 collections.deque。
5.1.3 列表推导式
- 列表推导式的方括号内包含以下内容:一个表达式,后面为一个 for 子句,然后,是零个或多个 for 或 if 子句。结果是由表达式依据 for 和 if 子句求值计算而得出一个新列表。
5.1.4 嵌套的列表推导式
-
zip() 返回元组的迭代器,其中第 i 个元组包含的是每个参数迭代器的第 i 个元素。不妨换一种方式认识 zip() :它会把行变成列,把列变成行。zip() 是延迟执行的:直至迭代时才会对元素进行处理。
-
传给 zip() 的可迭代对象可能长度不同,Python 提供了三种不同的处理方案:
- 默认情况下,zip() 在最短的迭代完成后停止。较长可迭代对象中的剩余项将被忽略,结果会裁切至最短可迭代对象的长度。
- 通常 zip() 用于可迭代对象等长的情况下。这时建议用 strict=True 的选项。与默认行为不同,如果一个可迭代对象在其他几个之前被耗尽则会引发 ValueError。
- 为了让所有的可迭代对象具有相同的长度,长度较短的可用常量进行填充。这可由 itertools.zip_longest() 来完成。
-
zip() 与 * 运算符相结合可以用来拆解一个列表
>>>x = [1, 2, 3] >>>y = [4, 5, 6] >>>list(zip(x, y)) [(1, 4), (2, 5), (3, 6)] >>>x2, y2 = zip(*zip(x, y)) >>>x == list(x2) and y == list(y2) True
5.7 深入条件控制
- not 的优先级最高, or 的优先级最低
- 注意,Python 与 C 不同,在表达式内部赋值必须显式使用 海象运算符 :=。 这避免了 C 程序中常见的问题:要在表达式中写 == 时,却写成了 =。(python 3.8后)
6.1 模块详解
6.3 dir()
- 内置函数 dir() 用于查找模块定义的名称。
- 没有参数时,dir() 列出当前已定义的名称,它列出所有类型的名称:变量,模块,函数…。dir() 不会列出内置函数和变量的名称。这些内容的定义在标准模块 builtins 中。
7.1 格式化字符串字面值
import math
#在 ':' 后传递整数,为该字段设置最小字符宽度,常用于列对齐
print(f'The value of pi is approximately {math.pi:.3f}.')
#还有一些修饰符可以在格式化前转换值。 '!a' 应用 ascii() ,'!s' 应用 str(),'!r' 应用 repr():
animals = 'eels'
print(f'My hovercraft is full of {animals!r}.')
#= 说明符可被用于将一个表达式扩展为表达式文本、等号再加表达式求值结果的形式。
bugs = 'roaches'
count = 13
area = 'living room'
print(f'Debugging {bugs=} {count=} {area=}')
#如果不想分拆较长的格式字符串,最好按名称引用变量进行格式化,不要按位置。
table = {'Sjoerd': 4127, 'Jack': 4098, 'Dcab': 8637678}
print('Jack: {0[Jack]:d}; Sjoerd: {0[Sjoerd]:d}; '
'Dcab: {0[Dcab]:d}'.format(table))
#也可以通过将 table 字典作为采用 ** 标记的关键字参数传入来实现。
print('Jack: {Jack:d}; Sjoerd: {Sjoerd:d}; Dcab: {Dcab:d}'.format(**table))
7.1.3 手动格式化字符串
- 字符串对象的 str.rjust() 方法通过在左侧填充空格,对给定宽度字段中的字符串进行右对齐。同类方法还有 str.ljust() 和 str.center() 。这些方法不写入任何内容,只返回一个新字符串,如果输入的字符串太长,它们不会截断字符串,而是原样返回。
- str.zfill() ,该方法在数字字符串左边填充零,且能识别正负号
7.2 读写文件
- 在文本模式下读取文件时,默认把平台特定的行结束符(Unix 上为 \n, Windows 上为 \r\n)转换为 \n。在文本模式下写入数据时,默认把 \n 转换回平台特定结束符。这种操作方式在后台修改文件数据对文本文件来说没有问题,但会破坏 JPEG 或 EXE 等二进制文件中的数据。注意,在读写此类文件时,一定要使用二进制模式。