跳转到主内容
新派编程网 - 新潮编程理念,全新技术课堂!

对python3.x的详细介绍

机器学习实战这本书是在python2.x的环境下写的,而python3.x中好多函数和2.x中的名称或使用方法都不一样了,因此对原书中的内容需要校正,下面简单的记录一下学习过程中fix的部分 1、print 函数后面需要加括号(程序清单2-4开始出现print函数) 2、raw_input改为input函数,在3.x中python使用input替代了raw_input函数(程序清单2-5) 3、reload(KNN)->import importlib importlib.reload(KNN) 立即学习 “ Python免费学习笔记(深入) ”; 4、程序清单3-6中 在python2.7中,找到key所对应的第一个元素为:firstStr = myTree.keys()[0],这在python3.4中运行会报错:‘dict_keys‘ object does not support indexing,这是因为python3改变了dict.keys,返回的是dict_keys对象,支持iterable 但不支持indexable,我们可以将其明确的转化成list,则此项功能在python3中应这样实现:
firstSides = list(myTree.keys()) firstStr = firstSides[0]#找到输入的第一个元素
5、程序清单3-9 pickle对数据进行持久化的时候是采用二进制的方式进行存储和读取的,所以写入文件的时候将 fw=open(filename,'w')---->fw=open(filename,'wb') 将文件以二进制的形式打开,方便pickle的写入 从文件中读取数据的时候也要用二进制的方式读取做以下修改 fr=open(filename)---->fr=open(filename,'rb') 6、程序清单4-5中 wordList=textParse(open('ch04/email/ham/%d.txt' % i).read()) 这一句在运行的时候老是报编码错误,结果是读取的文件中有乱码,删除乱码后问题解决 错误代码如下: UnicodeDecodeError: 'gbk' codec can't decode byte 0xae in position 199: illegal multibyte sequence trainingSet=range(50); del(trainingSet[randIndex]) 由于range不能返回List,不支持del操作,所以运行时出现以下错误: TypeError: 'range' object doesn't support item deletion 可以将代码修改为: trainingSet = list(range(50)); to be continued……

相关文章