zip函数简介

在 Python 2.x中,zip() 函数返回的是一个列表。在Python3中,zip()函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组(Tuple),然后返回由这些元组组成的对象,这样做的好处是节约了不少的内存。

Python的元组与列表类似,不同之处在于元组的元素不能修改。元组使用小括号 ( ),列表使用方括号 [ ]

语法格式

zip 语法格式:

zip([iterable, ...])

其中,iterable代表一个或多个迭代器。该方法会返回一个对象。

实例

以下实例展示了 zip 的使用方法:

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

zipped = zip(a, b) # 返回一个对象
print(zipped)

# 与 zip 相反,zip(*) 可理解为解压,返回二维矩阵式
x1, y1 = zip(*zip(a, b))
print(list(x1))
print(list(y1))

可以使用 list() 转换来输出列表。

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

# list() 转换为列表
zip_list = list(zip(a, b))
print(zip_list)

如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同。

a = [1, 2, 3]
c = [4, 5, 6, 7, 8]

# 元素个数与最短列表一致
print(list(zip(a, c)))

利用 * 号操作符,可以将元组解压为列表。

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

zipped = zip(a, b) # 返回一个对象

# 利用 ***** 号操作符,可以将元组解压为列表
print(*zipped)
# 或
print(*zip(a, b))

与zip相反,zip(*) 可理解为解压,返回二维矩阵式:

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

# 与zip相反,zip(*) 可理解为解压,返回二维矩阵式
x1, y1 = zip(*zip(a, b))
print(list(x1))
print(list(y1))

机器学习模型训练中,经常需要打乱数据集,用zip()函数可以实现:

# encoding=utf-8
# 机器学习模型训练中,经常需要打乱数据集,用zip()函数可以实现
import random

# 设置随机种子,保证每次生成随机相同,方便重现
random.seed(1)

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

# zip打包之后,用list转化为列表
zipped_data = list(zip(x, y))
print("原始数据:%s" % zipped_data)
# 打乱样本的数据,random使用的是原地操作的方式,没有任何返回值
# shuffle:打乱顺序
random.shuffle(zipped_data)
print("乱序数据:%s" % zipped_data)

# zip(*)反向解压,map()逐项转换类型,list()做最后转换
zipped_data2 = list(map(list, zip(*zipped_data)))
print(zipped_data2)


Python3中zip函数使用详解插图

关注公众号:程序新视界,一个让你软实力、硬技术同步提升的平台

除非注明,否则均为程序新视界原创文章,转载必须以链接形式标明本文链接

本文链接:http://www.choupangxia.com/2023/05/02/python3-zip/