python2和python3部分版本问题总结

来源:互联网 发布:脉脉职场 知乎 编辑:程序博客网 时间:2024/06/05 02:36

python语言有两个版本,python3不能对python2向下兼容,因此两个版本之间存在部分语法差异。现将我目前了解到的部分问题差异总结如下:

1.在python2版本中,d1为字典
keylist = d1.keys()
在python3中,需要进行强制转换
keylist = list(d1.keys())

**2.**python2中有range和xrange,返回的是列表。
但在python3中只有range,range多用作循环,range(0,10)返回一个range对象,如想返回一个list,前面加上list转换;arange是numpy模块中的函数,
使用前需要先导入此模块,arange(3):返回array类型对象。

3.l1,l2为列表,使用zip时,
python2中:zip(l1,l2)得出元组列表
python3中:list(zip(l1,l2))得出元组列表,需要强制转换

4.列表生成器
如:l1 = [1,2,3,4,5]
l2 = (i**2 for i in l1 if i % 2 ==0)
在python2中,l2.next()计算结果;在python3中,next(l2)计算结果。

5.有关pickle问题
在python3中,使用pickle时,文件必须是二进制,如:f1 = open(‘E:/PYTHON/demo/test3.txt’,’wb’)

6.有关map,filter,reduce
在python2中,这三个为内置的函数,可以直接调用
但是在python3中,变为了类,返回结果变成了可迭代的对象,可以加list进行强制装换;同时在使用reduce时,需要导入functools

有关其他语法不同将在我遇到的时候继续更新。