Python教程笔记(2)

Python教程

  • [5.1 列表详解](#5.1 列表详解)
    • [5.1.3 列表推导式](#5.1.3 列表推导式)
    • [5.1.4 嵌套的列表推导式](#5.1.4 嵌套的列表推导式)
  • [5.7 深入条件控制](#5.7 深入条件控制)
  • [6.1 模块详解](#6.1 模块详解)
  • [6.3 dir()](#6.3 dir())
  • [7.1 格式化字符串字面值](#7.1 格式化字符串字面值)
    • [7.1.3 手动格式化字符串](#7.1.3 手动格式化字符串)
  • [7.2 读写文件](#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() 与 * 运算符相结合可以用来拆解一个列表

    python 复制代码
    >>>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 格式化字符串字面值

python 复制代码
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 等二进制文件中的数据。注意,在读写此类文件时,一定要使用二进制模式。
相关推荐
兵慌码乱18 小时前
基于 MediaPipe 与 PySide2 的手势交互音乐控制系统实现:轻量化视觉交互全流程解析
python·opencv·计算机视觉·人机交互·手势识别·mediapipe·pyside2
luckdewei21 小时前
FastAPI 资产管理系统实战:复杂 ORM 关联、Alembic 迁移与 N+1 查询优化
python
aqi001 天前
15天学会AI应用开发(八)使用向量数据库实现RAG功能
人工智能·python·大模型·ai编程·ai应用
Csvn1 天前
`functools.lru_cache` —— 一行代码搞定缓存加速
后端·python
金銀銅鐵2 天前
[Python] 从《千字文》中随机挑选汉字
后端·python
cup112 天前
[技术复盘] Windows Python 打包实战:Nuitka 环境踩坑总结与 CI 自动化构建全指南
python·ai·环境变量·ci·nuitka·skill
aqi002 天前
15天学会AI应用开发(七)有了大模型为什么还要引入RAG
人工智能·python·大模型·ai编程·ai应用
金銀銅鐵2 天前
用 Python 实现 Take-Away 游戏
python·游戏