python中使用zip函数出现<zip object at 0x02A9E418>
2016-07-31 19:21
711 查看
在python中使用zip函数,出现<zip object at 0x02A9E418>错误的原因是,你是用的是python2点多的版本,python3.0对python做了改动
zip方法在Python 2 和Python 3中的不同
为何有这种不同
更多注解
问题一:zip方法在Python 2 和Python 3中的不同
Python 2 的代码演示:
Python 3 的代码演示:
问题二:为何有这种不同
我想最重要的原因是节约了不少的内存吧。Python的运行效率和编译类型的语言自然是没法比,但是能优化就优化一点吧~谁不想有更高的追求呢。
问题三:更多注解
这个zip在不同版本的不同反应了python的一个演变:大部分返回list的函数不在返回list,而是返回一个支持遍历的对象,比如map、fiter之类的,基本的例子如下:
所以运行方法是
>>> t=['name','age','gender']
>>> t2=['milo',30,'male']
>>> for each in zip(t,t2):
print(each)
运行结果:
('name', 'milo')
('age', 30)
('gender', 'male')
for each in zip(t,t2):
print(each)
zip方法在Python 2 和Python 3中的不同
为何有这种不同
更多注解
问题一:zip方法在Python 2 和Python 3中的不同
Python 2 的代码演示:
$ python2 >>> a = zip((1, 2), (3, 4)) >>> a [(1, 2), (3, 4)] # 可以看到这里返回的是一个list[/code]
Python 3 的代码演示:
$ python3 >>> a = zip((1, 2), (3, 4)) >>> a <zip object at 0x1007096c8> # 可以看到这里返回的是一个对象,这里就是2和3的不同点 >>> dir(a) # 查看a的相关属性 ['__class__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__' , '__gt__', '__hash__', '__init__', '__iter__', '__le__', '__lt__', '__ne__', '__new__', '__next__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__' ] # 这里值得注意的是 '__iter__' 和 '__next__' 方法,说明a是一个支持遍历的对象 # 既然知道了a是一个支持遍历的对象,我们也就基本明白了a的用法了 ### 和Python2的区别(一):返回的是一个支持遍历的对象,而不是一个list本身 >>> for i in a: print i # in 方法 ... (1, 3) (2, 4) >>> next(a) # 我们测试__next__方法 Traceback (most recent call last): File "<stdin>", line 1, in <module> StopIteration # 说明next方法是支持的,但是这里也说明了对象只能遍历一次 >>> a = zip((1, 2), (3, 4)) # 这里需要重新赋值,因为这个对象只能遍历一次 >>> next(a) (1, 3) # 运行良好 ### 返回的对象支持遍历的操作[/code]
问题二:为何有这种不同
我想最重要的原因是节约了不少的内存吧。Python的运行效率和编译类型的语言自然是没法比,但是能优化就优化一点吧~谁不想有更高的追求呢。
问题三:更多注解
这个zip在不同版本的不同反应了python的一个演变:大部分返回list的函数不在返回list,而是返回一个支持遍历的对象,比如map、fiter之类的,基本的例子如下:
$ python3 >>> a = map(abs, [1, 2, -3]) >>> a <map object at 0x100707ed0> >>> list(a) # 如果不习惯,可以自己手动转化为list,也是写兼容代码需要注意的地方 [1, 2, 3][/code]
$ python2 >>> a = map(abs, [1, 2, -3]) >>> a [1, 2, 3][/code]
所以运行方法是
>>> t=['name','age','gender']
>>> t2=['milo',30,'male']
>>> for each in zip(t,t2):
print(each)
运行结果:
('name', 'milo')
('age', 30)
('gender', 'male')
for each in zip(t,t2):
print(each)
相关文章推荐
- python中使用zip函数出现<zip object at 0x02A9E418>
- python中使用zip函数出现<zip object at 0x02A9E418>
- python中使用zip函数出现<zip object at 0x02A9E418>错误的原因
- python3下使用map()函数返回<map object at 0x00000000038327F0>导致不能直接使用的解决办法
- python使用xpath中遇到:<Element a at 0x39a9a80>到底是什么?
- python 绘图添加图例显示UserWarning: Legend does not support [<matplotlib.lines.Line2D object at 0x07FA3210>]
- 使用Gevent程序正常运行出现这个异常KeyError(155880780,) in <module 'threading' from '/usr/lib/python2.7/threading.pyc'> ignored解决办法
- Hibernate 使用JUnit 测试出现java.lang.NoSuchMethodError: org.objectweb.asm.ClassWriter.<init>(I)V
- Python3.x <generator object <genexpr> at 0x0000000002731828>
- Python 添加图例出错:UserWarning: Legend does not support [<matplotlib.lines.Line2D object at 0x07FA3210>]
- ValueError: Attempt to reuse RNNCell <tensorflow.contrib.rnn.python.ops.core_rnn_cell_impl.BasicLSTMCell object at 0x7f1a3c448390> with a different variable scope than its first use.解决方法
- Boost Python中exec,eval, exec_file, extract<>的函数形式和使用方法
- 运算符重载出现错误<__main__.Myperson object at 0x000002B0DF8ECA90>
- List<Map<String,Object>>使用Java代码遍历以获取String,Object的值 .
- 使用< OBJECT >标记引用对象
- 使用<input type="text" value=<%=str%>>出现取值不全的问题
- 使用kxml2-min-2.3.0.jar时的错误解决方法:Missing stack map in: <init> at label: 79
- 类使用友元函数重载输入(>>),输出(<<),不使用成员函数
- ArrayList<HashMap<String, Object>>使用示例!
- <python>Python的函数参数传递:传值?引用?