菜鸟教程 -- 学的不仅是技术,更是梦想!

Python 3 教程
Python3 教程 Python3 简介 Python3 环境搭建 Python3 VScode Python3 基础语法 Python3 基本数据类型 Python3 数据类型转换 Python3 解释器 Python3 注释 Python3 运算符 Python3 数字(Number) Python3 字符串 Python3 列表 Python3 元组 Python3 字典 Python3 集合 Python3 条件控制 Python3 循环语句 Python3 编程第一步 Python3 推导式 Python3 迭代器与生成器 Python3 with Python3 函数 Python3 lambda Python3 装饰器 Python3 数据结构 Python3 模块 Python __name__ Python3 输入和输出 Python3 File Python3 OS Python3 错误和异常 Python3 面向对象 Python3 命名空间/作用域 Python 虚拟环境的创建 Python 类型注解 Python3 标准库概览 Python3 实例 Python 测验

Python3 高级教程

Python3 正则表达式 Python3 CGI编程 Python3 MySQL(mysql-connector) Python3 MySQL(PyMySQL) Python3 网络编程 Python3 SMTP发送邮件 Python3 多线程 Python3 XML 解析 Python3 JSON Python3 日期和时间 Python3 内置函数 Python3 MongoDB Python3 urllib Python uWSGI 安装配置 Python3 pip Python3 operator Python math Python requests Python random Python OpenAI Python 有用的资源 Python AI 绘画 Python statistics Python hashlib Python 量化 Python pyecharts Python selenium 库 Python 爬虫 Python Scrapy 库 Python Markdown Python sys 模块 Python Pickle 模块 Python subprocess 模块 Python queue 模块 Python StringIO 模块 Python logging 模块 Python datetime 模块 Python re 模块 Python csv 模块 Python threading 模块 Python asyncio 模块 Python PyQt Python for 循环 Python while 循环
(追記) (追記ここまで)

Python3 zip() 函数

Python3 内置函数 Python3 内置函数


描述

zip() 函数用于将可迭代的对象(如列表、元组、字符串等)作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的对象,这样做的好处是节约了不少的内存。

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

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

zip 方法在 Python 2 和 Python 3 中的不同:在 Python 2.x zip() 返回的是一个列表。

如果需要了解 Python2 的应用,可以参考 Python zip()

语法

zip 语法:

zip([iterable, ...])

参数说明:

  • iterable -- 可迭代对象(如列表、元组、字符串等)

返回值

返回一个对象。

实例

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

实例(Python 3.0+)

>>> a = [1,2,3]
>>> b = [4,5,6]
>>> c = [4,5,6,7,8]
>>> zipped = zip(a,b) # 返回一个对象
>>> zipped
<zip object at 0x103abc288>
>>> list(zipped) # list() 转换为列表
[(1, 4), (2, 5), (3, 6)]
>>> list(zip(a,c)) # 元素个数与最短的列表一致
[(1, 4), (2, 5), (3, 6)]

>>> a1, a2 = zip(*zip(a,b)) # 与 zip 相反,zip(*) 可理解为解压,返回二维矩阵式
>>> list(a1)
[1, 2, 3]
>>> list(a2)
[4, 5, 6]
>>>

Python3 内置函数 Python3 内置函数

AI 思考中...

3 篇笔记 写笔记

  1. #0

    Conan

    103***[email protected]

    117

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

    import random
    X = [1, 2, 3, 4, 5, 6]
    y = [0, 1, 0, 0, 1, 1]
    zipped_data = list(zip(X, y)) 
    # 将样本和标签一 一对应组合起来,并转换成list类型方便后续打乱操作random.shuffle(zipped_data) 
    # 使用random模块中的shuffle函数打乱列表,原地操作,没有返回值
    new_zipped_data = list(map(list, zip(*zipped_data))) 
    # zip(*)反向解压,map()逐项转换类型,list()做最后转换
    new_X, new_y = new_zipped_data[0], new_zipped_data[1] 
    # 返回打乱后的新数据
    print('X:',X,'\n','y:',y)
    print('new_X:',new_X, '\n', 'new_y:',new_y)
    

    输出结果(因未设置随机种子seed,因此每次运行结果可能不一样):

    X: [1, 2, 3, 4, 5, 6] 
     y: [0, 1, 0, 0, 1, 1]
    new_X: [1, 2, 3, 4, 5, 6] 
     new_y: [0, 1, 0, 0, 1, 1]

    Conan

    103***[email protected]

    6年前 (2020年07月14日)
  2. #0

    What_how_why

    252***[email protected]

    52

    @Conan 非常感谢你让我了解到zip在处理数据方面的作用。

    但美中不足的是你的代码不能实现数据的打乱。

    将样本和标签一一对应组合起来,并转换成 list 类型方便后续打乱操作 random.shuffle(zipped_data)

    原因:在上面的这行代码中,你将打乱操作放到注释里了。

    重新整理如下:

    import random
    X = [1, 2, 3, 4, 5, 6]
    y = [0, 1, 0, 0, 1, 1]
    zipped_data = list(zip(X, y)) 
    # 将样本和标签一 一对应组合起来,并转换成list类型方便后续打乱操作
    random.shuffle(zipped_data) 
    # 使用random模块中的shuffle函数打乱列表,原地操作,没有返回值
    new_zipped_data = list(map(list, zip(*zipped_data))) 
    # zip(*)反向解压,map()逐项转换类型,list()做最后转换
    new_X, new_y = new_zipped_data[0], new_zipped_data[1] 
    # 返回打乱后的新数据
    print('X:',X,'\n','y:',y)
    print('new_X:',new_X, '\n', 'new_y:',new_y)

    我还有一个问题,如果真正的在机器学习模型训练中,将样本和标签一 一对应组合起来,是使用一下代码吗?

    X = [1, 2, 3, 4, 5, 6]
    y = [0, 1, 0, 0, 1, 1]
    zipped_data = list(zip(X, y)) 

    但是在上述代码中,写x序列比较麻烦,可以采用以下代码:

    lst = []
    for i in range(1,n+1): # n为数据集的个数
     lst.append(i)
    # -----------------------
    enumerate(x, start = 1) # x 为数据集

    What_how_why

    252***[email protected]

    6年前 (2020年12月15日)
  3. #0
    20
    @What _how_why

    enumerate() 函数返回的是一个索引序列(对象),所以你第三段代码末尾 enumerate(x, start = 1) 只实现了 zip(x, y), 若想实现 zipped_data = list(zip(x, y)) 你需要将这句修改为 zipped_data = list(enumerate(x, start = 1)

    5年前 (2021年03月18日)

点我分享笔记

  • 昵称 (必填)
  • 邮箱 (必填)
  • 引用地址

AltStyle によって変換されたページ (->オリジナル) /