5.3 Python高级特性之-列表生成式、生成器、迭代器

一、 列表生成式

是Python内置的非常简单却强大的可以用来创建list的生成式
具体可根据如下案例理解,且代码也是可用的
""" 1、 生成[0,1,2,3,4,5,6]这样列表 """
print(list(range(0, 7)))
""" 2、 生成[0,1,4,9,16,25]的列表, 即:0*0,1*1,2*2.....5*5 """
# 1) 基本方法-繁琐方法
list1 = list()
for one in range(0, 6):
    list1.append(one * one)
# 2) 列表表达式-简化方式
list1 = [one * one for one in range(0, 6)]
print(list1)
"""3、【if判断】获取1到20之间的属于偶数的正整数"""
list2 = [x for x in range(1, 21) if x % 2 == 0]
print(list2)
"""4、【双for循环】遍历两列表,并逐一组合条件"""
M, N = ["A1", "B1", "C1"], ["M", "N", "C1"]
list3 = [f"{m}+{n}" for m in M for n in N if m != n]  
list4 = [f"{m}+{n}" if m != n else m for m in M for n in N]  # 如果有else条件, if 和else逻辑均在for前
print(list3)
print(list4)
"""5、【遍历dict】提取用户信息,并列表存储,元素=  属性=属性值"""
student1 = {"name": "Lujier", "sex": "Female", "height": 1.65, "hair": "long"}
stu_info_list = [f"{stu_key}={stu_value}" for stu_key, stu_value in student1.items()]
print(stu_info_list)

在这里插入图片描述

二、 生成器

   通过学习列表表达式, 我们能够快速创建列表,但是:列表容量是有限的, 如果想要创建大数量的列表,会占用很大的内存空间,,但有时候我们并不是所
 有元素都会去访问,相当于可能会浪费空间。 故而便有了“生成器”
(generator)这样的概念, 可以在循环的过程中不断推算出后续的元素,这样
就无需直接创建完整的list,就节省了大量空间, 至于如何创建生成器&生成器
元素访问, 可根据下方截图案例自行尝试。
[关键字] 惰性计算的序列、next()
# 1、 基本内容
L = [x * x for x in range(5)]
# print(L)
g = (x * x for x in range(5))
print(g)
# 通过next()函数获得generator的下一个返回值
print(next(g))
print(next(g))
print(next(g))
print(next(g))
print(next(g))
# 无元素可访问,会报错StopIteration
print(next(g))

for one in g:
   print(one)
#2、 经典案例-斐波拉契
# [普通实现]斐波拉契数列用列表生成式-前n个数
def fibonacci_sequence(num):
    n, current_before, current = 1, 0, 1
    while n < num + 1:
        print(current)
        n, current_before, current = n + 1, current, current_before + current

# [生成器]斐波拉契数列
def fib(num):
    n, current_before, current = 1, 0, 1
    while n < num + 1:
        yield current
        n, current_before, current = n + 1, current, current_before + current

fibonacci_sequence(7)
print(fib(7))
mm = fib(7)
print(next(mm))
print(next(mm))

在这里插入图片描述

# 3、经典案例3-杨辉三角
def triangles(top_num):
    n, before, current = 2, [1], [1, 1]
    while n < top_num + 1:
        yield before
        n, before = n + 1, current
        current = [1] + [current[index] + current[index + 

在这里插入图片描述

三、 迭代器

基础理解:
一、 可被for循环的数据类型有:
   1、 【基础数据类型】 list、tuple、str、dict、set
   2、   generator: 包含生成器和生成器函数(yield)

二、 可迭代对象(Iterable)概念
   可以直接用for循环的对象统称为可迭代对象
   可以用isinstance()判断是否是可迭代对象,具体如下:
  
      from collections.abc import Iterable
      aaa = triangles(7)
       print(isinstance(aaa, Iterable)) # 结果返回true
  
三、 迭代器(Iterator)概念:
     迭代器:  可以被next()函数调用并不断返回下一个值的对象称为迭代器
     生成器:  可以作用于for循环,还可以next返回下一个值,直到越界抛出StopIteration

 四、生成器、迭代器区别
  生成器都是:迭代器
  可迭代对象不一定是迭代器: 如: list、dict、str
  对于是可迭代对象的类型但又不是迭代器,那么其实是可以转化的: iter()函数
【注】 以上所有内容见如下代码案例:

1、 判断是否为迭代器

在这里插入图片描述

2、可迭代对象但非迭代器next()

在这里插入图片描述

3、 iter()函数转化为迭代器

在这里插入图片描述

4、 for 循环遍历–原理同next()

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
内容简介 本书是经典的Python指导书,在第一版的基础上进行了全面升级。全书分为两个部分:第1部分占据了大约三分之二的篇幅,阐释这门语言的“核心”内容,包括基本的概念和语句、语法和风格、 Python对象、数字类型、序列类型、映射和集合类型、条件和循环、文件和输入/输出、错误和异常、函数和函数式编程、模块、面向对象编程、执行环境等内容:第2部分则提供了各种高级主题来展示可以使用Python做些什么,包括正则表达式、网络编程、网络客户端编程、多线程编程、图形用户界面编程、 Web编程、数据库编程、扩展Python 和一些其他材料。  本书适合Python初学者,以及已经入门但想继续学习和提高自身Python技巧的程序员。 目录 第1部分 Python核心  第1章 欢迎来到Python世界    1.1 什么是Python    1.2 起源    1.3 特点    1.4 下载和安装Python    1.5 运行Python    1.6 Python文档    1.7 比较PythonPython与其他语言的比较)    1.8 其他实现    1.9 练习   第2章 快速入门    2.1 程序输出,print语句及“Hello World!”    2.2 程序输入和raw_input()内建函数    2.3 注释    2.4 操作符    2.5 变量和赋值    2.6 数字    2.7 字符串    2.8 列表和元组    2.9 字典    2.10 代码块及缩进对齐    2.11 if语句    2.12 while循环    2.13 for循环和range()内建函数    2.14 列表解析    2.15 文件和内建函数open()、file()    2.16 错误和异常    2.17 函数    2.18 类    2.19 模块    2.20 实用的函数    2.21 练习   第3章 Python基础    3.1 语句和语法    3.2 变量赋值    3.3 标识符    3.4 基本风格指南    3.5 内存管理    3.6 第一个Python程序    3.7 相关模块和开发工具    3.8 练习   第4章 Python对象    4.1 Python 对象    4.2 标准类型    4.3 其他内建类型    4.4 内部类型    4.5 标准类型操作符    4.6 标准类型内建函数    4.7 类型工厂函数    4.8 标准类型的分类    4.9 不支持的类型    4.10 练习   第5章 数字    5.1 数字简介    5.2 整型    5.3 双精度浮点型    5.4 复数    5.5 操作符    5.6 内建函数与工厂函数    5.7 其他数字类型    5.8 相关模块    5.9 练习   第6章 序列:字符串、列表和元组    6.1 序列    6.2 字符串    6.3 字符串和操作符    6.4 只适用于字符串的操作符    6.5 内建函数    6.6 字符串内建函数    6.7 字符串的独特特性    6.8 Unicode    6.9 相关模块    6.10 字符串关键点总结   6.11 列表    6.12 操作符    6.13 内建函数    6.14 列表类型的内建函数    6.15 列表的特殊特性    6.16 元组    6.17 元组操作符和内建函数    6.18 元组的特殊特性    6.19 相关模块    6.20 *拷贝Python对象、浅拷贝和深拷贝    6.21 序列类型小结    6.22 练习   第7章 映像和集合类型    7.1 映射类型:字典    7.2 映射类型操作符    7.3 映射类型的内建函数和工厂函数    7.4 映射类型内建方法    7.5 字典的键    7.6 集合类型    7.7 集合类型操作符    7.8 内建函数    7.9 集合类型内建方法    7.10 集合类型总结表    7.11 相关模块    7.12 练习   第8章 条件和循环    8.1 if语句    8.2 else语句    8.3 elif(即else-if)语句    8.4 条件表达式(即“三元操作符”)    8.5 while语句    8.6 for语句    8.7 break语句    8.8 continue语句    8.9 pass语句    8.10 再谈else语句    8.11 迭代器和iter()函数    8.12 列表解析    8.13 生成器表达式    8.14 相关模块    8.15 练习   第9章 文件和输入输出    9.1 文件对象    9.2 文件内建函数(open()和file())    9.3 文件内建方法    9.4 文件内建属性    9.5 标准文件    9.6 命令行参数    9.7 文件系统    9.8 文件执行    9.9 永久存储模块    9.10 相关模块    9.11 练习   第10章 错误和异常    10.1 什么是异常    10.2 Python 的异常    10.3 检测和处理异常    10.4 上下文管理    10.5 *字符串作为异常    10.6 触发异常    10.7 断言    10.8 标准异常    10.9 *创建异常    10.10 (现在)为什么用异常    10.11 到底为什么要异常    10.12 异常和sys模块    10.13 相关模块    10.14 练习   第11章 函数和函数式编程    11.1 什么是函数?    11.2 调用函数    11.3 创建函数    11.4 传递函数    11.5 Formal Arguments    11.6 可变长度的参数    11.7 函数式编程    11.8 变量作用域    11.9 *递归     11.10 生成器    11.11 练习   第12章 模块    12.1 什么是模块    12.2 模块和文件    12.3 名称空间    12.4 导入模块    12.5 模块导入的特性    12.6 模块内建函数    12.7 包    12.8 模块的其他特性    12.9 相关模块    12.10 练习   第13章 面向对象编程    13.1 引言    13.2 面向对象编程    13.3 类    13.4 类属性    13.5 实例    13.6 实例属性    13.7 绑定和方法调用    13.8 静态方法和类方法    13.9 组合    13.10 子类和派生    13.11 继承    13.12 类、实例和其他对象的内建函数    13.13 用特殊方法定制类    13.14 私有化    13.15 *授权    13.16 新式类的高级特性Python 2.2+)    13.17 相关模块和文档    13.18 练习   第14章 执行环境    14.1 可调用对象    14.2 代码对象    14.3 可执行的对象声明和内建函数    14.4 执行其他(Python)程序    14.5 执行其他(非Python)程序    14.6 受限执行    14.7 结束执行    14.8 各种操作系统接口    14.9 相关模块    14.10 练习  第2部分 高级主题  第15章 正则表达式    15.1 引言/动机    15.2 正则表达式使用的特殊符号和字符    15.3 正则表达式和Python语言    15.4 正则表达式示例    15.5 练习   第16章 网络编程    16.1 引言    16.2 套接字:通信端点    16.3 Python的网络编程    16.4 *SocketServer模块    16.5 Twisted框架介绍    16.6 相关模块    16.7 练习   第17章 网络客户端编程    17.1 什么是因特网客户端    17.2 文件传输    17.3 网络新闻    17.4 电子邮件    17.5 相关模块    17.6 练习   第18章 多线程编程    18.1 引言/动机    18.2 线程和进程    18.3 Python、线程和全局解释器锁    18.4 thread模块    18.5 threading模块    18.6 相关模块    18.7 练习   第19章 图形用户界面编程    19.1 简介    19.2 Tkinter与Python编程 534   19.3 Tkinter举例    19.4 其他GUI简介    19.5 相关模块和其他GUI    19.6 练习   第20章 Web编程    20.1 介绍    20.2 使用Python进行Web应用:创建一个简单的Web客户端    20.3 高级Web客户端    20.4 CGI:帮助Web服务器处理客户端数据    20.5 建立CGI应用程序    20.6 在CGI使用Unicode编码    20.7 高级CGI    20.8 Web(HTTP)服务器    20.9 相关模块    20.10 练习   第21章 数据库编程    21.1 介绍    21.2 Python数据库应用程序程序员接口(DB-API)    21.3 对象-关系管理器(ORM)    21.4 相关模块    21.5 练习   第22章 扩展Python 623   22.1 引言/动机    22.2 创建Python扩展    22.3 相关话题    22.4 练习  第23章 其他话题    23.1 Web服务    23.2 用Win32的COM来操作微软Office    23.3 用Jython写Python和Java的程序    23.4 练习    23.3 用Jython写Python和Java的程序    23.4 练习
第一章:数据结构和算法 1.1 解压序列赋值给多个变量 1.2 解压可迭代对象赋值给多个变量 1.3 保留最后N个元素 1.4 查找最大或最小的N个元素 1.5 实现一个优先级队列 1.6 字典的键映射多个值 1.7 字典排序 1.8 字典的运算 1.9 查找两字典的相同点 1.10 删除序列相同元素并保持顺序 1.11 命名切片 1.12 序列出现次数最多的元素 1.13 通过某个关键字排序一个字典列表 1.14 排序不支持原生比较的对象 1.15 通过某个字段将记录分组 1.16 过滤序列元素 1.17 从字典提取子集 1.18 映射名称到序列元素 1.19 转换并同时计算数据 1.20 合并多个字典或映射 第二章:字符串和文本 2.1 使用多个界定符分割字符串 2.2 字符串开头或结尾匹配 2.3 用Shell通配符匹配字符串 2.4 字符串匹配和搜索 2.5 字符串搜索和替换 2.6 字符串忽略大小写的搜索替换 2.7 最短匹配模式 2.8 多行匹配模式 2.9 将Unicode文本标准化 2.10 在正则式使用Unicode 2.11 删除字符串不需要的字符 2.12 审查清理文本字符串 2.13 字符串对齐 2.14 合并拼接字符串 2.15 字符串插入变量 2.16 以指定列宽格式化字符串 2.17 在字符串处理html和xml 2.18 字符串令牌解析 2.19 实现一个简单的递归下降分析器 2.20 字节字符串上的字符串操作 第三章:数字日期和时间 3.1 数字的四舍五入 3.2 执行精确的浮点数运算 3.3 数字的格式化输出 3.4 二八十六进制整数 3.5 字节到大整数的打包与解包 3.6 复数的数学运算 3.7 无穷大与NaN 3.8 分数运算 3.9 大型数组运算 3.10 矩阵与线性代数运算 3.11 随机选择 3.12 基本的日期与时间转换 3.13 计算最后一个周五的日期 3.14 计算当前月份的日期范围 3.15 字符串转换为日期 3.16 结合时区的日期操作 第四章:迭代器生成器 4.1 手动遍历迭代器 4.2 代理迭代 4.3 使用生成器创建新的迭代模式 4.4 实现迭代器协议 4.5 反向迭代 4.6 带有外部状态的生成器函数 4.7 迭代器切片 4.8 跳过可迭代对象的开始部分 4.9 排列组合的迭代 4.10 序列上索引值迭代 4.11 同时迭代多个序列 4.12 不同集合上元素的迭代 4.13 创建数据处理管道 4.14 展开嵌套的序列 4.15 顺序迭代合并后的排序迭代对象 4.16 迭代器代替while无限循环 第五章:文件与IO 5.1 读写文本数据 5.2 打印输出至文件 5.3 使用其他分隔符或行终止符打印 5.4 读写字节数据 5.5 文件不存在才能写入 5.6 字符串的I/O操作 5.7 读写压缩文件 5.8 固定大小记录的文件迭代 5.9 读取二进制数据到可变缓冲区 5.10 内存映射的二进制文件 5.11 文件路径名的操作 5.12 测试文件是否存在 5.13 获取文件夹的文件列表 5.14 忽略文件名编码 5.15 打印不合法的文件名 5.16 增加或改变已打开文件的编码 5.17 将字节写入文本文件 5.18 将文件描述符包装成文件对象 5.19 创建临时文件和文件夹 5.20 与串行端口的数据通信 5.21 序列化Python对象 第六章:数据编码和处理 6.1 读写CSV数据 6.2 读写JSON数据 6.3 解析简单的XML数据 6.4 增量式解析大型XML文件 6.5 将字典转换为XML 6.6 解析和修改XML 6.7 利用命名空间解析XML文档 6.8 与关系型数据库的交互 6.9 编码和解码十六进制数 6.10 编码解码Base64数据 6.11 读写二进制数组数据 6.12 读取嵌套和可变长二进制数据 6.13 数据的累加与统计操作 第七章:函数 7.1 可接受任意数量参数的函数 7.2 只接受关键字参数的函数 7.3 给函数参数增加元信息 7.4 返回多个值的函数 7.5 定义有默认参数的函数 7.6 定义匿名或内联函数 7.7 匿名函数捕获变量值 7.8 减少可调用对象的参数个数 7.9 将单方法的类转换为函数 7.10 带额外状态信息的回调函数 7.11 内联回调函数 7.12 访问闭包定义的变量 第八章:类与对象 8.1 改变对象的字符串显示 8.2 自定义字符串的格式化 8.3 让对象支持上下文管理协议 8.4 创建大量对象时节省内存方法 8.5 在类封装属性名 8.6 创建可管理的属性 8.7 调用父类方法 8.8 子类扩展property 8.9 创建新的类或实例属性 8.10 使用延迟计算属性 8.11 简化数据结构的初始化 8.12 定义接口或者抽象基类 8.13 实现数据模型的类型约束 8.14 实现自定义容器 8.15 属性的代理访问 8.16 在类定义多个构造器 8.17 创建不调用init方法的实例 8.18 利用Mixins扩展类功能 8.19 实现状态对象或者状态机 8.20 通过字符串调用对象方法 8.21 实现访问者模式 8.22 不用递归实现访问者模式 8.23 循环引用数据结构的内存管理 8.24 让类支持比较操作 8.25 创建缓存实例 第九章:元编程 9.1 在函数上添加包装器 9.2 创建装饰器时保留函数元信息 9.3 解除一个装饰器 9.4 定义一个带参数的装饰器 9.5 可自定义属性的装饰器 9.6 带可选参数的装饰器 9.7 利用装饰器强制函数上的类型检查 9.8 将装饰器定义为类的一部分 9.9 将装饰器定义为类 9.10 为类和静态方法提供装饰器 9.11 装饰器为被包装函数增加参数 9.12 使用装饰器扩充类的功能 9.13 使用元类控制实例的创建 9.14 捕获类的属性定义顺序 9.15 定义有可选参数的元类 9.16 *args和**kwargs的强制参数签名 9.17 在类上强制使用编程规约 9.18 以编程方式定义类 9.19 在定义的时候初始化类的成员 9.20 利用函数注解实现方法重载 9.21 避免重复的属性方法 9.22 定义上下文管理器的简单方法 9.23 在局部变量域执行代码 9.24 解析与分析Python源码 9.25 拆解Python字节码 第十章:模块与包 10.1 构建一个模块的层级包 10.2 控制模块被全部导入的内容 10.3 使用相对路径名导入包子模块 10.4 将模块分割成多个文件 10.5 利用命名空间导入目录分散的代码 10.6 重新加载模块 10.7 运行目录或压缩文件 10.8 读取位于包的数据文件 10.9 将文件夹加入到sys.path 10.10 通过字符串名导入模块 10.11 通过导入钩子远程加载模块 10.12 导入模块的同时修改模块 10.13 安装私有的包 10.14 创建新的Python环境 10.15 分发包 第十一章:网络与Web编程 11.1 作为客户端与HTTP服务交互 11.2 创建TCP服务器 11.3 创建UDP服务器 11.4 通过CIDR地址生成对应的IP地址集 11.5 创建一个简单的REST接口 11.6 通过XML-RPC实现简单的远程调用 11.7 在不同的Python解释器之间交互 11.8 实现远程方法调用 11.9 简单的客户端认证 11.10 在网络服务加入SSL 11.11 进程间传递Socket文件描述符 11.12 理解事件驱动的IO 11.13 发送与接收大型数组 第十二章:并发编程 12.1 启动与停止线程 12.2 判断线程是否已经启动 12.3 线程间通信 12.4 给关键部分加锁 12.5 防止死锁的加锁机制 12.6 保存线程的状态信息 12.7 创建一个线程池 12.8 简单的并行编程 12.9 Python的全局锁问题 12.10 定义一个Actor任务 12.11 实现消息发布/订阅模型 12.12 使用生成器代替线程 12.13 多个线程队列轮询 12.14 在Unix系统上面启动守护进程 第十三章:脚本编程与系统管理 13.1 通过重定向/管道/文件接受输入 13.2 终止程序并给出错误信息 13.3 解析命令行选项 13.4 运行时弹出密码输入提示 13.5 获取终端的大小 13.6 执行外部命令并获取它的输出 13.7 复制或者移动文件和目录 13.8 创建和解压压缩文件 13.9 通过文件名查找文件 13.10 读取配置文件 13.11 给简单脚本增加日志功能 13.12 给内库增加日志功能 13.13 记录程序执行的时间 13.14 限制内存和CPU的使用量 13.15 启动一个WEB浏览器 第十四章:测试、调试和异常 14.1 测试输出到标准输出上 14.2 在单元测试给对象打补丁 14.3 在单元测试测试异常情况 14.4 将测试输出用日志记录到文件 14.5 忽略或者期望测试失败 14.6 处理多个异常 14.7 捕获所有异常 14.8 创建自定义异常 14.9 捕获异常后抛出另外的异常 14.10 重新抛出最后的异常 14.11 输出警告信息 14.12 调试基本的程序崩溃错误 14.13 给你的程序做基准测试 14.14 让你的程序跑的更快 第十五章:C语言扩展 15.1 使用ctypes访问C代码 15.2 简单的C扩展模块 15.3 一个操作数组的扩展函数 15.4 在C扩展模块操作隐形指针 15.5 从扩张模块定义和导出C的API 15.6 从C语言调用Python代码 15.7 从C扩展释放全局锁 15.8 C和Python的线程混用 15.9 用WSIG包装C代码 15.10 用Cython包装C代码 15.11 用Cython写高性能的数组操作 15.12 将函数指针转换为可调用对象 15.13 传递NULL结尾的字符串给C函数库 15.14 传递Unicode字符串给C函数库 15.15 C字符串转换为Python字符串 15.16 不确定编码格式的C字符串 15.17 传递文件名给C扩展 15.18 传递已打开的文件给C扩展 15.19 从C语言读取类文件对象 15.20 处理C语言可迭代对象 15.21 诊断分析代码错误
原书名: Core Python Programming (2nd Edition) 原出版社: Prentice Hall PTR 作者: (美)Wesley J. Chun 译者: 宋吉广 出版社:人民邮电出版社 ISBN:9787115178503 上架时间:2008-6-23 出版日期:2008 年7月 开本:16开 页码:654 版次:2-1 第1部分 python核心  第1章 欢迎来到python世界    1.1 什么是python    1.2 起源    1.3 特点     1.3.1 高级     1.3.2 面向对象     1.3.3 可升级     1.3.4 可扩展     1.3.5 可移植性     1.3.6 易学     1.3.7 易读     1.3.8 易维护     1.3.9 健壮性     1.3.10 高效的快速原型开发工具     1.3.11 内存管理器     1.3.12 解释性和(字节)编译性    1.4 下载和安装python    1.5 运行python     1.5.1 命令行上的交互式解释器  .   1.5.2 从命令行启动脚本     1.5.3 集成开发环境     1.5.4 其他的集成开发环境和执行环境    1.6 python文档    1.7 比较pythonpython与其他语言的比较)    1.8 其他实现    1.9 练习   第2章 快速入门    2.1 程序输出,print语句及“hello world!”    2.2 程序输入和raw_input()内建函数    2.3 注释    2.4 操作符    2.5 变量和赋值    2.6 数字    2.7 字符串    2.8 列表和元组    2.9 字典    2.10 代码块及缩进对齐    2.11 if语句    2.12 while循环    2.13 for循环和range()内建函数    2.14 列表解析    2.15 文件和内建函数open()、file()    2.16 错误和异常    2.17 函数     2.17.1 如何定义函数     2.17.2 如何调用函数     2.17.3 默认参数    2.18 类    2.19 模块     2.19.1 如何导入模块     2.19.2 如何访问一个模块函数或访问一个模块变量    2.20 实用的函数    2.21 练习   第3章 python基础    3.1 语句和语法     3.1.1 注释(#)     3.1.2 继续(\)     3.1.3 多个语句构成代码组(:)     3.1.4 代码组由不同的缩进分隔     3.1.5 同一行书写多个语句(;)     3.1.6 模块    3.2 变量赋值     3.2.1 赋值操作符     3.2.2 增量赋值     3.2.3 多重赋值     3.2.4 “多元”赋值    3.3 标识符     3.3.1 合法的python标识符     3.3.2 关键字     3.3.3 内建     3.3.4 专用下划线标识符    3.4 基本风格指南     3.4.1 模块结构和布局     3.4.2 在主程序书写测试代码    3.5 内存管理     3.5.1 变量定义     3.5.2 动态类型     3.5.3 内存分配     3.5.4 引用计数     3.5.5 垃圾收集    3.6 第一个python程序    3.7 相关模块和开发工具    3.8 练习   第4章 python对象    4.1 python 对象    4.2 标准类型    4.3 其他内建类型     4.3.1 类型对象和type类型对象     4.3.2 none--python的null对象    4.4 内部类型     4.4.1 代码对象     4.4.2 帧对象     4.4.3 跟踪记录对象     4.4.4 切片对象     4.4.5 省略对象     4.4.6 xrange 对象    4.5 标准类型操作符     4.5.1 对象值的比较     4.5.2 对象身份比较     4.5.3 布尔类型    4.6 标准类型内建函数     4.6.1 type()     4.6.2 cmp()     4.6.3 str()和repr()(及``操作符)     4.6.4 type()和isinstance()     4.6.5 python类型操作符和内建函数总结    4.7 类型工厂函数    4.8 标准类型的分类     4.8.1 存储模型     4.8.2 更新模型     4.8.3 访问模型    4.9 不支持的类型    4.10 练习   第5章 数字    5.1 数字简介     5.1.1 如何创建数值对象并用其赋值(数字对象)     5.1.2 如何更新数字对象     5.1.3 如何删除数字对象    5.2 整型     5.2.1 布尔型     5.2.2 标准整型     5.2.3 长整型     5.2.4 整型和长整型的统一    5.3 双精度浮点型    5.4 复数    5.5 操作符     5.5.1 混合模式操作符     5.5.2 标准类型操作符     5.5.3 算术操作符     5.5.4 *位操作符(只适用于整型)    5.6 内建函数与工厂函数     5.6.1 标准类型函数     5.6.2 数字类型函数     5.6.3 仅用于整型的函数    5.7 其他数字类型     5.7.1 布尔“数”     5.7.2 十进制浮点型    5.8 相关模块    5.9 练习   第6章 序列:字符串、列表和元组    6.1 序列     6.1.1 标准类型操作符     6.1.2 序列类型操作符     6.1.3 内建函数(bif)    6.2 字符串    6.3 字符串和操作符     6.3.1 标准类型操作符     6.3.2 序列操作符切片([]和[:])    6.4 只适用于字符串的操作符     6.4.1 格式化操作符(%)     6.4.2 字符串模板: 更简单的替代品     6.4.3 原始字符串操作符(r/r)     6.4.4 unicode字符串操作符(u/u)    6.5 内建函数     6.5.1 标准类型函数     6.5.2 序列类型函数     6.5.3 字符串类型函数    6.6 字符串内建函数     6.7 字符串的独特特性     6.7.1 特殊字符串和控制字符     6.7.2 三引号     6.7.3 字符串不变性    6.8 unicode     6.8.1 术语     6.8.2 什么是unicode     6.8.3 怎样使用unicode     6.8.4 codec是什么     6.8.5 编码解码     6.8.6 把unicode应用到实际应用     6.8.7 从现实得来的教训     6.8.8 python的unicode支持    6.9 相关模块    6.10 字符串关键点总结   6.11 列表    6.12 操作符     6.12.1 标准类型操作符     6.12.2 序列类型操作符     6.12.3 列表类型操作符和列表解析    6.13 内建函数     6.13.1 标准类型函数     6.13.2 序列类型函数     6.13.3 列表类型内建函数    6.14 列表类型的内建函数    6.15 列表的特殊特性    6.16 元组    6.17 元组操作符和内建函数     6.17.1 标准类型操作符、序列类型操作符和内建函数     6.17.2 元组类型操作符和内建函数、内建方法    6.18 元组的特殊特性     6.18.1 不可变性给元组带来了什么影响     6.18.2 元组也不是那么“不可变”     6.18.3 默认集合类型     6.18.4 单元素元组     6.18.5 字典的关键字    6.19 相关模块    6.20 *拷贝python对象、浅拷贝和深拷贝    6.21 序列类型小结    6.22 练习   第7章 映像和集合类型    7.1 映射类型:字典     7.1.1 如何创建字典和给字典赋值     7.1.2 如何访问字典的值     7.1.3 如何更新字典     7.1.4 如何删除字典元素和字典    7.2 映射类型操作符     7.2.1 标准类型操作符     7.2.2 映射类型操作符    7.3 映射类型的内建函数和工厂函数     7.3.1 标准类型函数[type()、str()和cmp()]     7.3.2 映射类型相关的函数    7.4 映射类型内建方法    7.5 字典的键     7.5.1 不允许一个键对应多个值     7.5.2 键必须是可哈希的    7.6 集合类型     7.6.1 如何创建集合类型和给集合赋值     7.6.2 如何访问集合的值     7.6.3 如何更新集合     7.6.4 如何删除集合的成员和集合    7.7 集合类型操作符     7.7.1 标准类型操作符(所有的集合类型)     7.7.2 集合类型操作符(所有的集合类型)     7.7.3 集合类型操作符(仅适用于可变集合)    7.8 内建函数     7.8.1 标准类型函数     7.8.2 集合类型工厂函数    7.9 集合类型内建方法     7.9.1 方法(所有的集合方法)     7.9.2 方法(仅适用于可变集合)     7.9.3 操作符和内建方法比较    7.10 集合类型总结表    7.11 相关模块    7.12 练习   第8章 条件和循环    8.1 if语句     8.1.1 多重条件表达式     8.1.2 单一语句的代码块    8.2 else语句    8.3 elif(即else-if)语句    8.4 条件表达式(即“三元操作符”)    8.5 while语句     8.5.1 一般语法     8.5.2 计数循环     8.5.3 无限循环    8.6 for语句     8.6.1 一般语法     8.6.2 用于序列类型     8.6.3 用于迭代器类型     8.6.4 range()内建函数     8.6.5 xrange() 内建函数     8.6.6 与序列相关的内建函数    8.7 break语句    8.8 continue语句    8.9 pass语句    8.10 再谈else语句    8.11 迭代器和iter()函数     8.11.1 什么是迭代器     8.11.2 为什么要迭代器     8.11.3 如何迭代     8.11.4 使用迭代器     8.11.5 可变对象和迭代器     8.11.6 如何创建迭代器    8.12 列表解析    8.13 生成器表达式    8.14 相关模块    8.15 练习   第9章 文件和输入输出    9.1 文件对象    9.2 文件内建函数(open()和file())     9.2.1 工厂函数file()     9.2.2 通用换行符支持(uns)    9.3 文件内建方法     9.3.1 输入     9.3.2 输出     9.3.3 文件内移动     9.3.4 文件迭代     9.3.5 其他     9.3.6 文件方法杂项    9.4 文件内建属性    9.5 标准文件    9.6 命令行参数    9.7 文件系统    9.8 文件执行    9.9 永久存储模块     9.9.1 pickle和marshal模块     9.9.2 dbm风格的模块     9.9.3 shelve模块    9.10 相关模块    9.11 练习   第10章 错误和异常    10.1 什么是异常     10.1.1 错误     10.1.2 异常    10.2 python 的异常    10.3 检测和处理异常     10.3.1 try-except语句     10.3.2 包装内建函数     10.3.3 带有多个except的try语句     10.3.4 处理多个异常的except语句     10.3.5 捕获所有异常     10.3.6 “异常参数”     10.3.7 在应用使用我们封装的函数     10.3.8 else子句     10.3.9 finally子句     10.3.10 try-finally语句     10.3.11 try-except-else-finally:厨房一锅端  10.4 上下文管理     10.4.1 with语句     10.4.2 *上下文管理协议    10.5 *字符串作为异常    10.6 触发异常    10.7 断言    10.8 标准异常    10.9 *创建异常    10.10 (现在)为什么用异常    10.11 到底为什么要异常    10.12 异常和sys模块    10.13 相关模块    10.14 练习   第11章 函数和函数式编程    11.1 什么是函数?     11.1.1 函数vs过程     11.1.2 返回值与函数类型    11.2 调用函数     11.2.1 函数操作符     11.2.2 关键字参数    11.2.3 默认参数     11.2.4 参数组    11.3 创建函数     11.3.1 def语句     11.3.2 声明与定义比较     11.3.3 前向引用     11.3.4 函数属性     11.3.5 内部/内嵌函数     11.3.6 *函数(与方法)装饰器    11.4 传递函数    11.5 formal arguments     11.5.1 位置参数     11.5.2 默认参数    11.6 可变长度的参数     11.6.1 非关键字可变长参数(元组)     11.6.2 关键字变量参数(字典)     11.6.3 调用带有可变长参数对象函数    11.7 函数式编程     11.7.1 匿名函数与lambda     11.7.2 内建函数apply()、filter()、map()、reduce()     11.7.3 偏函数应用    11.8 变量作用域     11.8.1 全局变量与局部变量     11.8.2 globa语句     11.8.3 作用域的数字     11.8.4 闭包     11.8.5 作用域和lambda     11.8.6 变量作用域和名称空间    11.9 *递归     11.10 生成器     11.10.1 简单的生成器特性        11.10.2 加强的生成器特性    11.11 练习   第12章 模块    12.1 什么是模块    12.2 模块和文件     12.2.1 模块名称空间     12.2.2 搜索路径和路径搜索    12.3 名称空间     12.3.1 名称空间与变量作用域比较     12.3.2 名称查找、确定作用域、覆盖     12.3.3 无限制的名称空间    12.4 导入模块     12.4.1 import语句     12.4.2 from-import语句     12.4.3 多行导入     12.4.4 扩展的import语句(as)    12.5 模块导入的特性     12.5.1 载入时执行模块     12.5.2 导入(import)和加载(load)     12.5.3 导入到当前名称空间的名称     12.5.4 被导入到导入者作用域的名字     12.5.5 关于__future__     12.5.6 警告框架     12.5.7 从zip文件导入模块     12.5.8 “新的”导入钩子    12.6 模块内建函数     12.6.1 __import__()     12.6.2 globals()和locals()        12.6.3 reload()    12.7 包     12.7.1 目录结构     12.7.2 使用from-import导入包    12.8 模块的其他特性     12.8.1 自动载入的模块     12.8.2 阻止属性导入     12.8.3 不区分大小的导入     12.8.4 源代码编码     12.8.5 导入循环     12.8.6 模块执行    12.9 相关模块    12.10 练习   第13章 面向对象编程    13.1 引言    13.2 面向对象编程     13.2.1 面向对象设计与面向对象编程的关系     13.2.2 现实的问题     13.2.3 *常用术语    13.3 类     13.3.1 创建类     13.3.2 声明与定义    13.4 类属性     13.4.1 类的数据属性     13.4.2 methods     13.4.3 决定类的属性     13.4.4 特殊的类属性    13.5 实例     13.5.1 初始化:通过调用类对象来创建实例     13.5.2 __init__()“构造器”方法     13.5.3 __new__()“构造器”方法     13.5.4 __del__()“解构器”方法    13.6 实例属性     13.6.1 “实例化”实例属性(或创建一个更好的构造器)     13.6.2 查看实例属性     13.6.3 特殊的实例属性     13.6.4 建类型属性     13.6.5 实例属性vs类属性    13.7 绑定和方法调用     13.7.1 调用绑定方法     13.7.2 调用非绑定方法    13.8 静态方法和类方法     13.8.1 staticmethod()和classmethod()内建函数     13.8.2 使用函数修饰符    13.9 组合    13.10 子类和派生    13.11 继承     13.11.1 __bases__类属性     13.11.2 通过继承覆盖方法     13.11.3 从标准类型派生     13.11.4 多重继承    13.12 类、实例和其他对象的内建函数     13.12.1 issubclass()     13.12.2 isinstance()     13.12.3 hasattr()、getattr()、setattr()、delattr()     13.12.4 dir()     13.12.5 super()     13.12.6 vars()    13.13 用特殊方法定制类     13.13.1 简单定制(roundfloat2)     13.13.2 数值定制(time60)     13.13.3 迭代器(randseq和anyiter)     13.13.4 *多类型定制(numstr)    13.14 私有化    13.15 *授权     13.15.1 包装     13.15.2 实现授权    13.16 新式类的高级特性python 2.2+)     13.16.1 新式类的通用特性     13.16.2 __slots__类属性     13.16.3 __getattribute__()特殊方法     13.16.4 描述符     13.16.5 元类和__metaclass__    13.17 相关模块和文档    13.18 练习   第14章 执行环境    14.1 可调用对象     14.1.1 函数     14.1.2 方法     14.1.3 类     14.1.4 类的实例    14.2 代码对象    14.3 可执行的对象声明和内建函数     14.3.1 callable()     14.3.2 compile()     14.3.3 eval()     14.3.4 exec     14.3.5 input()     14.3.6 使用python在运行时生成和执行python代码    14.4 执行其他(python)程序     14.4.1 导入     14.4.2 execfile()     14.4.3 将模块作为脚本执行    14.5 执行其他(非python)程序     14.5.1 os.system()     14.5.2 os.popen()     14.5.3 os.fork()、os.exec*()、os.wait*()     14.5.4 os.spawn*()     14.5.5 subprocess 模块     14.5.6 相关函数    14.6 受限执行    14.7 结束执行     14.7.1 sys.exit() and systemexit     14.7.2 sys.exitfunc()     14.7.3 os._exit() 函数     14.7.4 os.kill() function    14.8 各种操作系统接口    14.9 相关模块    14.10 练习  第2部分 高级主题  第15章 正则表达式    15.1 引言/动机    15.2 正则表达式使用的特殊符号和字符     15.2.1 用管道符号(
内容简介 · · · · · · 本书以培养读者以计算机科学家一样的思维方式来理解Python语言编程。贯穿全书的主体是如何思考、设计、开发的方法,而具体的编程语言,只是提供了一个具体场景方便介绍的媒介。 全书共21章,详细介绍Python语言编程的方方面面。本书从基本的编程概念开始讲起,包括语言的语法和语义,而且每个编程概念都有清晰的定义,引领读者循序渐进地学习变量、表达式、语句、函数和数据结构。书还探讨了如何处理文件和数据库,如何理解对象、方法和面向对象编程,如何使用调试技巧来修正语法错误、运行时错误和语义错误。每一章都配有术语表和练习题,方便读者巩固所学的知识和技巧。此外,每一章都抽出一节来讲解如何调试程序。作者针对每章所专注的语言特性,或者相关的开发问题,总结了调试的方方面面。 本书的第2版与第1版相比,做了很多更新,将编程语言从Python 2升级成Python 3,并修改了很多示例和练习,增加了新的章节,更全面地介绍Python语言。 这是一本实用的学习指南,适合没有Python编程经验的程序员阅读,也适合高或大学的学生、Python爱好者及需要了解编程基础的人阅读。对于首次接触程序设计的人来说,是一本不可多得的佳作。 作者简介 · · · · · · [美] 艾伦 B. 唐尼(Allen B. Downey) Allen Downey是欧林工程学院的计算机科学教授,曾任教于韦尔斯利学院、科尔比学院和加州大学伯克利分校。他是加州大学伯克利分校的计算机科学博士,并拥有MIT的硕士和学士学位。 译者介绍 赵普明 毕业清华大学计算机系,从事软件开发行业近10年。从2.3版本开始接触Python,工作使用Python编写脚本程序,用于快速原型构建以及日志计算等日常作业;业余时,作为一个编程语言爱好者,对D、Kotlin、Lua、Clojure、Scala、Julia、Go等语言均有了解,但至今仍为Python独特的风格、简洁的设计而惊叹。 目录 · · · · · · 第1章 程序之道 1 1.1 什么是程序 1 1.2 运行Python 2 1.3 第一个程序 3 1.4 算术操作符 3 1.5 值和类型 4 1.6 形式语言和自然语言 5 1.7 调试 6 1.8 术语表 7 1.9 练习 8 第2章 变量、表达式和语句 9 2.1 赋值语句 9 2.2 变量名称 9 2.3 表达式和语句 10 2.4 脚本模式 11 2.5 操作顺序 12 2.6 字符串操作 13 2.7 注释 13 2.8 调试 14 2.9 术语表 15 2.10 练习 16 第3章 函数 17 3.1 函数调用 17 3.2 数学函数 18 3.3 组合 19 3.4 添加新函数 19 3.5 定义和使用 21 3.6 执行流程 21 3.7 形参和实参 22 3.8 变量和形参是局部的 23 3.9 栈图 23 3.10 有返回值函数和无返回值函数 24 3.11 为什么要有函数 25 3.12 调试 26 3.13 术语表 26 3.14 练习 27 第4章 案例研究:接口设计 30 4.1 turtle模块 30 4.2 简单重复 31 4.3 练习 32 4.4 封装 33 4.5 泛化 34 4.6 接口设计 34 4.7 重构 35 4.8 一个开发计划 36 4.9 文档字符串 37 4.10 调试 38 4.11 术语表 38 4.12 练习 39 第5章 条件和递归 41 5.1 向下取整除法操作符和求模操作符 41 5.2 布尔表达式 42 5.3 逻辑操作符 42 5.4 条件执行 43 5.5 选择执行 43 5.6 条件链 44 5.7 嵌套条件 44 5.8 递归 45 5.9 递归函数的栈图 46 5.10 无限递归 47 5.11 键盘输入 47 5.12 调试 48 5.13 术语表 49 5.14 练习 50 第6章 有返回值的函数 53 6.1 返回值 53 6.2 增量开发 54 6.3 组合 56 6.4 布尔函数 57 6.5 再谈递归 58 6.6 坚持信念 59 6.7 另一个示例 60 6.8 检查类型 60 6.9 调试 61 6.10 术语表 63 6.11 练习 63 第7章 迭代 65 7.1 重新赋值 65 7.2 更新变量 66 7.3 while语句 66 7.4 break语句 68 7.5 平方根 68 7.6 算法 70 7.7 调试 70 7.8 术语表 71 7.9 练习 71 第8章 字符串 73 8.1 字符串是一个序列 73 8.2 len 74 8.3 使用for循环进行遍历 74 8.4 字符串切片 75 8.5 字符串是不可变的 76 8.6 搜索 77 8.7 循环和计数 77 8.8 字符串方法 78 8.9 操作符in 79 8.10 字符串比较 79 8.11 调试 80 8.12 术语表 82 8.13 练习 82 第9章 案例分析:文字游戏 85 9.1 读取单词列表 85 9.2 练习 86 9.3 搜索 87 9.4 使用下标循环 88 9.5 调试 90 9.6 术语表 90 9.7 练习 91 第10章 列表 93 10.1 列表是一个序列 93 10.2 列表是可变的 94 10.3 遍历一个列表 95 10.4 列表操作 95 10.5 列表切片 96 10.6 列表方法 96 10.7 映射、过滤和化简 97 10.8 删除元素 98 10.9 列表和字符串 99 10.10 对象和值 100 10.11 别名 101 10.12 列表参数 102 10.13 调试 103 10.14 术语表 104 10.15 练习 105 第11章 字典 108 11.1 字典是一种映射 108 11.2 使用字典作为计数器集合 110 11.3 循环和字典 111 11.4 反向查找 111 11.5 字典和列表 112 11.6 备忘 114 11.7 全局变量 115 11.8 调试 117 11.9 术语表 118 11.10 练习 119 第12章 元组 121 12.1 元组是不可变的 121 12.2 元组赋值 122 12.3 作为返回值的元组 123 12.4 可变长参数元组 124 12.5 列表和元组 124 12.6 字典和元组 126 12.7 序列的序列 127 12.8 调试 128 12.9 术语表 129 12.10 练习 129 第13章 案例研究:选择数据结构 132 13.1 单词频率分析 132 13.2 随机数 133 13.3 单词直方图 134 13.4 最常用的单词 135 13.5 可选形参 136 13.6 字典减法 137 13.7 随机单词 138 13.8 马尔可夫分析 138 13.9 数据结构 140 13.10 调试 141 13.11 术语表 142 13.12 练习 143 第14章 文件 144 14.1 持久化 144 14.2 读和写 144 14.3 格式操作符 145 14.4 文件名和路径 146 14.5 捕获异常 147 14.6 数据库 148 14.7 封存 149 14.8 管道 150 14.9 编写模块 151 14.10 调试 152 14.11 术语表 152 14.12 练习 153 第15章 类和对象 155 15.1 用户定义类型 155 15.2 属性 156 15.3 矩形 157 15.4 作为返回值的实例 158 15.5 对象是可变的 159 15.6 复制 159 15.7 调试 161 15.8 术语表 161 15.9 练习 162 第16章 类和函数 163 16.1 时间 163 16.2 纯函数 164 16.3 修改器 165 16.4 原型和计划 166 16.5 调试 167 16.6 术语表 168 16.7 练习 168 第17章 类和方法 170 17.1 面向对象特性 170 17.2 打印对象 171 17.3 另一个示例 172 17.4 一个更复杂的示例 173 17.5 init方法 173 17.6 _ _str_ _方法 174 17.7 操作符重载 175 17.8 基于类型的分发 175 17.9 多态 177 17.10 接口和实现 177 17.11 调试 178 17.12 术语表 179 17.13 练习 179 第18章 继承 181 18.1 卡片对象 181 18.2 类属性 182 18.3 对比卡牌 183 18.4 牌组 184 18.5 打印牌组 185 18.6 添加、删除、洗牌和排序 185 18.7 继承 186 18.8 类图 188 18.9 数据封装 189 18.10 调试 190 18.11 术语表 191 18.12 练习 191 第19章 Python拾珍 194 19.1 条件表达式 194 19.2 列表理解 195 19.3 生成器表达式 196 19.4 any和all 197 19.5 集合 197 19.6 计数器 199 19.7 defaultdict 200 19.8 命名元组 201 19.9 收集关键词参数 202 19.10 术语表 203 19.11 练习 203 第20章 调试 205 20.1 语法错误 205 20.2 运行时错误 207 20.2.1 我的程序什么都不做 207 20.2.2 我的程序卡死了 207 20.2.3 无限循环 208 20.2.4 无限递归 208 20.2.5 执行流程 208 20.2.6 当我运行程序,会得到一个异常 209 20.2.7 我添加了太多print语句,被输出淹没了 210 20.3 语义错误 210 20.3.1 我的程序运行不正确 211 20.3.2 我有一个巨大而复杂的表达式,而它和我预料的不同 211 20.3.3 我有一个函数,返回值和预期不同 212 20.3.4 我真的真的卡住了,我需要帮助 212 20.3.5 不行,我真的需要帮助 212 第21章 算法分析 214 21.1 增长量级 215 21.2 Python基本操作的分析 217 21.3 搜索算法的分析 218 21.4 散列表 219 21.5 术语表 223 译后记 224

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值