Python zip() 的简单用法

如同字面意思,打包。在一些场景中,我们的一个对象包含两种简单属性,比方商品的名称和价格:

name = ["apple", "banana", "cat", "dog"]
price = [1, 2, 3, 4]

如果要把这两个东西绑定起来管理,一种标准的方法自然是利用面向对象的思想弄一个类。而zip提供了一种更简单的方式:

name = ["apple", "banana", "cat", "dog"]
price = [1, 2, 3, 4]

product = zip(name, price)
print(product)
product = list(product)
print(product)
print(type(product[0]))

输出如下:

<zip object at 0x000001C71A2DE308>
[('apple', 1), ('banana', 2), ('cat', 3), ('dog', 4)]
<class 'tuple'>

直接调用zip得到的是一个zip对象,可以使用list方法将其转化为list对象以供使用。而list中存储的则是按原列表顺序匹配得到的一个个tuple。


如果各列表的长度不一,则以最短的列表为准,多余的部分将被直接舍弃:

name = ["apple", "banana", "cat", "dog"]
price = [1, 2, 3]

product = zip(name, price)
product = list(product)
print(product)

输出如下:

[('apple', 1), ('banana', 2), ('cat', 3)]

当然,将两个以上的列表合在一起也是可以的:

name = ["apple", "banana", "cat", "dog"]
price = [1, 2, 3]
num = [6, 7]

product = zip(name, price, num)
product = list(product)
print(product)

输出如下:

[('apple', 1, 6), ('banana', 2, 7)]

本文为了介绍方便起见使用list作为zip的参数,而实际上任何可迭代的对象都是可以用zip来捆绑在一起的。
当然了,有压缩,自然也就有解压。对于满足"列表里面包含多个元组"形式的压缩对象,使用zip(*)进行解压:

name = ["apple", "banana", "cat", "dog"]
price = [1, 2, 3]
num = [6, 7]

product = list(zip(name, price, num))
name1, price1, num1 = list(zip(*product))
print(name1)
print(price1)
print(num1)

输出如下:

('apple', 'banana')
(1, 2)
(6, 7)

注意这里得到的是tuple,有需要的话还得转回list。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值