温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Python的zip函数怎么应用

发布时间:2022-03-23 09:04:14 来源:亿速云 阅读:165 作者:iii 栏目:开发技术

今天小编给大家分享一下Python的zip函数怎么应用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

    1. zip() 函数的介绍

    1.1 功能

    zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的 zip 对象。

    1.2 语法

    zip(*iterables) --> zip object

    参数说明:

    (1) iterables:可迭代对象,如列表、字典、元组、字符串等,zip() 函数允许多个可迭代对象作为参数。

    (2) 当 zip() 函数没有参数时,则返回空的迭代器。

    (3) 当 zip() 函数只有一个参数时,则从参数中依次取一个元素组成一个元组,再将依次组成的元组组合成一个新的迭代器。

    (4) 当 zip() 函数有两个参数时,分别从两个参数中依次各取出一个元素组成元组,再将依次组成的元组组合成一个新的迭代器。

    (5) 返回值:返回一个可迭代的 zip 对象,其内部元素为元组,可以使用 list() 函数 或 tuple() 函数将其转换为列表或元组。

    2. zip() 函数的应用

    2.1 用 zip() 函数实现列表合并

    下面使用 zip() 函数实现将两个列表进行合并。例如,将 name_list、age_list 两个列表合并,代码如下:

    name_list = ["Amo", "Paul", "Jason", "Seven"]
    age_list = [18, 19, 20, 21]
    # 输出 ==> [('Amo', 18), ('Paul', 19), ('Jason', 20), ('Seven', 21)]
    print(list(zip(name_list, age_list)))

    2.2 使用 zip() 函数建立字典

    有两个列表 name_list 和 score_list,其中 name_list 中存储着学生姓名,score_list 存储着每个学生的考试成绩,如果要通过某个学生姓名来查找其考试成绩,则需要一个字典,zip() 函数可以很方便地建立字典,代码如下:

    name_list = ["Amo", "Paul", "Jason", "Seven"]  # 定义列表name_list
    score_list = [80, 96, 77, 88]  # 定义成绩
    my_dict = dict(zip(name_list, score_list))  # 使用dict()函数将zip对象转换为字典
    print(my_dict["Amo"])  # 输出 80

    2.3 zip() 函数妙用 1— 矩阵的旋转

    矩阵是高等数学中的常见工具,也常用于统计分析和数学应用中。下面使用 zip() 函数实现一个 xyz 的矩阵的旋转,代码如下:

    x = [1, 2, 3]
    y = [4, 5, 6]
    z = [7, 8, 9]
    
    xyz = list(zip(x, y, z))
    print(xyz)  # 输出 ==> [(1, 4, 7), (2, 5, 8), (3, 6, 9)]

    2.4 zip() 函数妙用 2— 矩阵的行列转置

    矩阵的转置是矩阵的一种运算,在矩阵的所有运算法则中占有重要地位。例如,把矩阵 A 的行和列互相交换所产生的的矩阵称为 A 的转置矩阵,这一过程称为矩阵的转置。下面实现将 xyz 矩阵进行转置,代码如下:

    x = [1, 2, 3]
    y = [4, 5, 6]
    z = [7, 8, 9]
    
    xyz = list(zip(x, y, z))
    print(xyz)
    for a, b, c in zip(x, y, z):
        print(f"{a},{b},{c}")

    2.5 zip() 函数妙用 3— 将 4×3 矩阵转置成 3×4 矩阵

    data1 = ((0, 1, 2), (3, 4, 5), (6, 7, 8), (9, 10, 11))
    data2 = zip(*data1)
    print(type(data2))  # <class 'zip'>
    print(tuple(data2))  # 输出 ==> ((0, 3, 6, 9), (1, 4, 7, 10), (2, 5, 8, 11))

    2.6 通过序列的解压执行 zip() 函数的反操作

    在某些情况下,我们需要执行相反的操作 &mdash; 解压序列。解压操作涉及将压缩后的元素恢复为其原始状态。可以添加 * 运算符到函数调用中。代码如下:

    a = (1, 2, 3)
    b = (10, 20, 30)
    L = list(zip(a, b))
    print(f"obj = {L}")
    c, d = list(zip(*L))  # 使用*解压序列
    print(f"c = {c} \nd = {d}")
    if a == c and b == d:
        print("两次 zip() 等于啥都没干......")

    2.7 输出字典中值最大所对应的键

    在一个字典当中,求值最大所对应的键时,zip() 函数就派上了大用场。代码如下:

    data = {"张三": 100, "李四": 20, "王五": 500, "赵六": 12}
    obj = zip(data.values(), data.keys())
    # 输出:分数最高的学生姓名为: 王五
    print(f"分数最高的学生姓名为: {max(obj)[1]}")

    附:*zip( )

    *zip()函数是zip()函数的逆过程,将zip对象变成原先组合前的数据。

    a = [1, 2, 3]
    b = [4, 5, 6]
    c = [7, 8, 9, 10, 11]
    print(*zip(a, b))

    Python的zip函数怎么应用

    以上就是“Python的zip函数怎么应用”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注亿速云行业资讯频道。

    向AI问一下细节

    免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

    AI