python中使用zip函数出现错误的原因
python中zip函数返回一个以元组为元素的列表,其中第i个元组包含每个参数序列的第i个元素。返回的列表长度被截断为最短的参数序列的长度。只有一个序列参数时,它返回一个1元组的列表。没有参数时,它返回一个空的列表。概括起来一句话:zip函数返回的是一个列表,但是列表里面的元素是由一个个元组构成的..
在Python中使用zip函数,出现
- zip方法在Python2和Python3中的不同
- 为何有这种不同
- 更多注解
问题一:zip方法在Python2和Python3中的不同
Python2的代码演示:
$python2 >>>a=zip((1,2),(3,4)) >>>a [(1,2),(3,4)]
#可以看到这里返回的是一个list
Python3的代码演示:
$python3 >>>a=zip((1,2),(3,4)) >>>a
#可以看到这里返回的是一个对象,这里就是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本身>>>foriina:printi#in方法…(1,3)(2,4)>>>next(a)#我们测试__next__方法Traceback(mostrecentcalllast):File“
问题二:为何有这种不同
我想最重要的原因是节约了不少的内存吧。Python的运行效率和编译类型的语言自然是没法比,但是能优化就优化一点吧~谁不想有更高的追求呢。
问题三:更多注解
这个zip在不同版本的不同反应了python的一个演变:大部分返回list的函数不在返回list,而是返回一个支持遍历的对象,比如map、fiter之类的,基本的例子如下:
$python3 >>>a=map(abs,[1,2,-3]) >>>a>>>list(a)#如果不习惯,可以自己手动转化为list,也是写兼容代码需要注意的地方 [1,2,3] $python2 >>>a=map(abs,[1,2,-3]) >>>a [1,2,3]
所以运行方法是
>>>t=[‘name','age','gender'] >>>t2=[‘milo',30,'male'] >>>foreachinzip(t,t2): print(each)
运行结果:
(‘name',‘milo') (‘age',30) (‘gender',‘male') foreachinzip(t,t2): print(each)
总结
以上所述是小编给大家介绍的python中使用zip函数出现
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。