1 print函数
最常见的是Python2中print 函数后接单引号 ,
print ‘Hello World’
而python3中接括号
print(‘Hello World’)
2 split函数
作字符串分割时,如果分割依据是一个字符,则需要转为byte码,即将
split(‘:’, 1)
改为:
split(':'.encode(),1)
3 map映射的返回值
在python3中,map映射的返回值是 map object,所以要使用具体返回的数据还需要转换,比如我的程序中,读取到一个list,我需要的是list里面的数据,但这个list里的数据以str的形式存储,所以用map映射方便地批量转成float浮点数形式:
map(float,strlist)
但是这个map的返回值是map objective,而不是一个装了浮点数的list,所以要加一步
list(map(float,strlist))
4 reshape 和 ValueError: cannot reshape array of size 1 into shape (3,3)
不确定这个是不是python3的改动,因为调bug的时候一起调了就写在这里。
如果出现这个问题,有一个可能是你要reshape的那个对象不存在。调bug的时候可以考虑一下。
还有list是没有reshape方法的,要先转换成array,即
np.array(alist).reshape(3,3)
当时为了读取一个参数文件,参数文件格式是
R: 7.533745e-03 -9.999714e-01 -6.166020e-04 1.480249e-02 7.280733e-04 -9.998902e-01 9.998621e-01 7.523790e-03 1.480755e-02
并把读取到的9个数据整理成矩阵,把别人的Python2代码最后改成了
np.array(list(map(float,velo['R'.encode()].decode().split(' ')))).reshape(3,3)
其中split(' ')的作用是把读到的9个数据按空格分割,整理成一个数据用str形式存储的list,所以后面才会用到map转回浮点数,然后因为3提到的原因需要再转回list,再由于4的原因要加一层数组转换np.array。
5 AttributeError: 'Counter' object has no attribute 'iteritems'
这个原因是python3中不再用到iteritems这个属性,改成 items()即可。