如何理解python中zip()函数的意思?函数详细解释。

首先理解zip函数的概念,其次在了解zip函数的传参和用法。

zip()函数的概念: 

 zip()是Python的一个内建函数,它接受一系列可迭代的对象作为参数, 将对象中对应的元素打包成一个个tuple(元组),然后返回由这些tuples组成的list(列表)。

zip()函数的传入的参数:

很明显里面传入的参数是Iterable,Iterable是什么呢?

1、在Python里iterable被认为是一类对象,这类对象能够一次返回它的一个成员(也就是元素)。抽象一点就是适合迭代的对象。

2、最简单的说就是一个数组、字符串、列表都是iterable的.(都是可迭代的)

3、如果一个对象是interable的,表示它可以被遍历。实际上,任何具有__iter__()或__getitem__()方法的对象,Python就认为它是一个iterable。

4、Python里有大量内置的iterable类型,如: list,str,tuple,dict,file,xrange等。使用内置的iter()函数来生成,

所以iterable意思为迭代,可以理解为连续的一组数据,可以遍历的数据,包含内置的string、list、dict、tuple、set()

zip()函数的用法:

a = [1,2,3]
b = [2,3,6]

zipper = zip(a,b)

print(zipper) #这里返回的会是一个可遍历的对象

返回结果: 

 

为什么会出现上述现象,返回的是一个对象呢,这就是python2与python3的不同,python2中大部分返回可直接返回list都发生了变动,返回的是一个支持遍历的对象,而不是一个list本身。

 在最后返回时加入list,根据zip传入的a,b,相互遍历来匹配对应的元组(tuple)。 

a = [1,2,3]
b = [2,3,6]

zipper = zip(a,b)

print(list(zipper))  #返回的是一个list列表

 返回结果是:

那如果是匹配的长度不一致呢?

a = [1,2,3,7]
b = [2,3,6]

zipper = zip(a,b)

print(list(zipper))  #返回list列表

结果会根据匹配的元素个数较短的长度为准输出,超过该长度的元素将得不到返回。

结果为:

 那么返回结果只有一种类型吗?

zip函数可以转化为字典类型,返回字典类型:

A0 = dict(zip(('a', 'b', 'c', 'd', 'e'), (1, 2, 3, 4, 5)))
print(A0)

结果为:

 zip()函数还能用于到for循环中:

x = [1, 2, 3]
y = [4, 5, 6]

for (x, y) in zip(x, y):
    print(x, y, x * y)

 结果为:

 其实就是使用到了zip里面的遍历给(x,y)赋值,循环一次赋值一次,运用到的就是zip本身的用法。

 

 

你可能感兴趣的:(python,开发语言)