代码改变世界

关于python中enumerate和zip函数的用法及举例

2016-03-03 20:54  dream_er  阅读(1795)  评论(0编辑  收藏  举报

关于python中enumerate和zip函数的用法及举例

关于enumerate函数:

enumerate函数可以同时返回列表或元组等可迭代对象的下标和内容,但实际上,enumerate函数实际返回的是一个enumerate类型的可迭代对象,下面是用法举例:

seq=[1,2,'3','hello world']
#传统方法迭代seq
i=0
for element in seq:
    print seq[i]
    i+=1
#使用enumerate函数迭代seq
for i,element in enumerate(seq):
    print i,element
print type(enumerate(seq))
结果是:

1
2
3
hello world
0 1
1 2
2 3
3 hello world
<type 'enumerate'>

关于zip函数:

其实,zip函数是一个非常有趣的函数,我们大家都知道zip是一个压缩软件的名字,而python里面的zip函数确实有压缩功能。zip函数可以接受一系列的可迭代对象作为参数,将对象中对应的元素打包成一个个tuple(元组),然后由这些tuple(元组)组成一个list(列表),故其返回值为list(列表),而如果传入的可迭代对象的长度不一致,则返回可迭代对象中最短的一个对象的长度,而其,通过zip(*list)可以将原打包的可迭代对向分开,详细见下面例子:

a=[1,2,3,4,5]
b=['a','b','c','d']
c=zip(a)
print type(c)
print c
c=zip(a,b)
print c
#在zip函数的括号里面加上*号,则是zip函数的逆操作
d=zip(*c)
print d

输出结果为:

<type 'list'>
[(1,), (2,), (3,), (4,), (5,)]
[(1, 'a'), (2, 'b'), (3, 'c'), (4, 'd')]
[(1, 2, 3, 4), ('a', 'b', 'c', 'd')]