python zip()函数的理解与应用

zip 方法在 Python 2 和 Python 3 中的不同:在 Python 3.x 中为了减少内存,zip() 返回的是一个对象。如需展示列表,需手动 list() 转换。

用法,zip(iterable, ......)      参数,一个或多个迭代器。

zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。

如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。

a = [1, 2, 3]
b = [1, 2, 3]
c = [1, 2, 3, 4]

ab  = list(zip(a, b))
bc  = list(zip(b, c))
abc = list(zip(a, b, c))
re  = list(zip(*abc))

print(ab)
#[(1, 1), (2, 2), (3, 3)]
print(bc)
#[(1, 1), (2, 2), (3, 3)]
print(abc)
#[(1, 1, 1), (2, 2, 2), (3, 3, 3)]
print(re)
#[(1, 2, 3), (1, 2, 3), (1, 2, 3)]

在运行zip(*abc)之前,abc的值是:[(1, 1, 1), (2, 2, 2), (3, 3, 3)]
那么,zip(*abc) 等价于 zip((1, 1, 1), (2, 2, 2), (3, 3, 3))
所以,运行结果是:[(1, 2, 3), (1, 2, 3), (1, 2, 3)]

正如:

nums = ['flower','flow','flight']
list(zip(*nums))=[('f', 'f', 'f'),
                  ('l', 'l', 'l'),
                  ('o', 'o', 'i'),
                  ('w', 'w', 'g')]

应用1:

l = ['a', 'b', 'c', 'd', 'e','f']
print l
#打印列表
print(list(zip(l[:-1],l[1:])))
输出结果:
['a', 'b', 'c', 'd', 'e', 'f']
[('a', 'b'), ('b', 'c'), ('c', 'd'), ('d', 'e'), ('e', 'f')]

应用2:

对列表的元素进行算数运算。

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

c = [x + y for x, y in list(zip(a, b))]
d = list(map(lambda x : x[1] + x[0], list(zip(a, b))))

print(c)
#[5, 7, 9]
print(d)
#[5, 7, 9]

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值