本节对一些 Python 易混淆的操作进行对比。
1.1 有放回随机采样和无放回随机采样
1.2 lambda 函数的参数
1.3 copy 和 deepcopy
复制和变量别名结合在一起时,容易混淆:
对别名的修改会影响原变量,(浅)复制中的元素是原列表中元素的别名,而深层复制是递归地进行复制,对深层复制的修改不影响原变量。
1.4 == 和 is
1.5 判断类型
1.6 字符串搜索
1.7 List 后向索引
这个只是习惯问题,前向索引时下标从0开始,如果反向索引也想从0开始可以使用~。
2.1 读写 CSV 文件
注意,当 CSV 文件过大时会报错:_csv.Error: field larger than field limit (131072),通过修改上限解决
csv 还可以读以 分割的数据
2.2 迭代器工具
itertools 重新定义了很多迭代器工具,例如子序列工具:
序列排序:
多个序列合并:
2.3 计数器
计数器可以统计一个可迭代对象中每个元素出现的次数。
2.4 带默认值的 Dict
当访问不存在的 Key 时,defaultdict 会将其设置为某个默认值。
2.5 有序 Dict
3.1 输出错误和警告信息
向标准错误输出信息
输出警告信息
控制警告消息的输出
3.2 代码中测试
有时为了调试,我们想在代码中加一些代码,通常是一些 print 语句,可以写为:
一旦调试结束,通过在命令行执行 -O 选项,会忽略这部分代码:
3.3 代码风格检查
使用 pylint 可以进行不少的代码风格和语法检查,能在运行之前发现一些错误
3.4 代码耗时
耗时测试
测试某代码块耗时
代码耗时优化的一些原则
4.1 argmin 和 argmax
argmax同理。
4.2 转置二维列表
4.3 一维列表展开为二维列表
1. 要有决心做任何事情,首先要有足够的决心和坚持,才能做好事情、学好Python。
2. 勤于动手
对于编程语言的学习,不能眼高手低,学的过程中,想到就要写出来,一方面能够培养出写代码的感觉,另一方面可以加深知识的掌控。
3. 一套完整的学习体系
Python编程语言的全面学习,需要拥有一整套系统的学习资料和学习计划,全面掌握Python基础知识,对以后解决Python编程过程中的问题十分有益!
4. 项目实战训练
Python编程基础知识的学习最终目的是应用于项目中,因此,项目实战训练必不可少,多做几个项目,尽量是功能完整的项目,形成项目思路,对以后进行项目实战是很有好处的!