[Python] 内置函数之zip类(函数)介绍和详细使用案例

zip类(函数)介绍

Python中的zip()函数用于将多个可迭代对象(如列表、元组等)的元素打包成一个个元组,然后返回这些元组组成的列表。如果各个可迭代对象的长度不一致,则返回列表长度与最短的对象相同。

参数说明:

*iterables:表示可变参数,可以传入多个可迭代对象。

strict: 如果为True,则检查输入的所有 *iterables 是否长度一致,如果不一致,将会抛出ValueError。

zip类的本质是一个迭代器。

使用案例

*iterables的长度一样,strict为False

import types
def is_generator(obj):
    """
    判断obj是否为生成器
    """
    return isinstance(obj, types.GeneratorType)

def is_iterable(obj):
    """
    判断obj是否为可迭代对象
    """
    return hasattr(obj, '__iter__') and callable(obj.__iter__)

list1 = [1, 2, 3]
list2 = ['a', 'b', 'c']
list3 = [4.0, 5.0, 6.0]

# 将三个列表打包成一个元组列表
result = zip(list1, list2, list3)
print(result)  # 输出:zip对象,其实是一个迭代成器
print('is_generator:', is_generator(result))
print('is_iterable:', is_iterable(result))

# 将元组解压为列表
unpacked_result = [list(item) for item in result]
print(unpacked_result)  # 输出:[[1, 'a', 4.0], [2, 'b', 5.0], [3, 'c', 6.0]]

# 迭代器只能遍历一次,再次遍历,将会无效
unpacked_result = [list(item) for item in result]
print(unpacked_result)

*iterables的长度不一样,strict为False

list1 = [1, 2, 3, 4]
list2 = ['a', 'b', 'c', 'd', 'e']
list3 = [4.0, 5.0, 6.0]

# 将三个列表打包成一个元组列表
result = zip(list1, list2, list3, strict=False)

# 将元组解压为列表
unpacked_result = [list(item) for item in result]
print(unpacked_result)  # 输出:[[1, 'a', 4.0], [2, 'b', 5.0], [3, 'c', 6.0]]

*iterables的长度不一样,strict为True

list1 = [1, 2, 3, 4]
list2 = ['a', 'b', 'c', 'd', 'e']
list3 = [4.0, 5.0, 6.0]

# 将三个列表打包成一个元组列表
result = zip(list1, list2, list3, strict=True)

# 将元组解压为列表
unpacked_result = [list(item) for item in result]
print(unpacked_result)  # 输出:[[1, 'a', 4.0], [2, 'b', 5.0], [3, 'c', 6.0]]

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老狼IT工作室

你的鼓励将是我创作的最大动力。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值