前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python3中zip函数使用详解

Python3中zip函数使用详解

作者头像
程序新视界
发布2023-05-03 11:59:46
3560
发布2023-05-03 11:59:46
举报
文章被收录于专栏:丑胖侠丑胖侠

zip函数简介

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

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

语法格式

zip 语法格式:

代码语言:javascript
复制
zip([iterable, ...])

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

实例

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

代码语言:javascript
复制
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() 转换来输出列表。

代码语言:javascript
复制
a = [1, 2, 3]
b = [4, 5, 6]

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

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

代码语言:javascript
复制
a = [1, 2, 3]
c = [4, 5, 6, 7, 8]

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

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

代码语言:javascript
复制
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(*) 可理解为解压,返回二维矩阵式:

代码语言:javascript
复制
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()函数可以实现:

代码语言:javascript
复制
# 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)
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-05-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • zip函数简介
    • 语法格式
    • 实例
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档