当从python2转到python3时,在对list进行处理后经常会遇到结果不正常,经过查找发现python2 和python3对list处理后返回对象会有一些差别:
在python2 中,map(), filter等对list进行处理的方法会返回一个list对象:
而在python3中, 会返回一个可迭代对象:
从以上我们可以发现python2对list 处理还是返回list 结果,可以无限迭代;
但是python3处理后会返回一个对应的可迭代对象,且类似于指针,迭代之后会从对象中清空。
所以在使用这些方法时需要谨慎,必要时请改成 列表生成式:
result = [x+1 for x in list1]