加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

浅谈Python中的zip()与*zip()函数详解

发布时间:2020-12-17 07:20:40 所属栏目:Python 来源:网络整理
导读:前言 1.实验环境: Python 3.6; 2.示例代码地址:下载示例; 3.本文中元素是指列表、元组、字典等集合类数据类型中的下一级项目(可能是单个元素或嵌套列表)。 zip(*iterables)函数详解 zip()函数的定义 从参数中的多个迭代器取元素组合成一个新的迭代器;

前言

1.实验环境: Python 3.6;

2.示例代码地址:下载示例;

3.本文中元素是指列表、元组、字典等集合类数据类型中的下一级项目(可能是单个元素或嵌套列表)。

zip(*iterables)函数详解

zip()函数的定义

从参数中的多个迭代器取元素组合成一个新的迭代器;

返回:
返回一个zip对象,其内部元素为元组;可以转化为列表或元组;

传入参数:元组、列表、字典等迭代器。

zip()函数的用法

当zip()函数中只有一个参数时

zip(iterable)从iterable中依次取一个元组,组成一个元组。

示例:

## zip()函数单个参数
list1 = [1,2,3,4]
tuple1 = zip(list1)
# 打印zip函数的返回类型
print("zip()函数的返回类型:n",type(tuple1))
# 将zip对象转化为列表
print("zip对象转化为列表:n",list(tuple1))

输出:

zip()函数的返回类型:
<class 'zip'>
 zip对象转化为列表:
[(1,),(2,(3,(4,)]

当zip()函数有两个参数时 ◦zip(a,b)zip()函数分别从a和b依次各取出一个元素组成元组,再将依次组成的元组组合成一个新的迭代器--新的zip类型数据。

注意: ◦要求a与b的维数相同,当两者具有相同的行数与列数时,正常组合对应位置元素即可;

当a与b的行数或列数不同时,取两者结构中最小的行数和列数,依照最小的行数和列数将对应位置的元素进行组合;这时相当于调用itertools.zip_longest(*iterables)函数。

举例:

m = [[1,3],[4,5,6],[7,8,9]]
 n = [[2,2],[3,4,4]]
 p = [[2,]

zip(m,n)将返回([1,[2,2]),([4,3]),([7,9],4])

m[0],n[0] m[1],n[1] m[2],n[2]
[1,3]
[2,2]
[4,6]
[3,3]
[7,9]
[4,4]

zip(m,p)将返回([1,3])

m[0],9]

代码示例:

## zip()函数有2个参数
m = [[1,9]]
n = [[2,4]]
p = [[2,3]]
# 行与列相同
print("行与列相同:n",list(zip(m,n)))
# 行与列不同
print("行与列不同:n",p)))

输出:

行与列相同:
 [([1,4])]
行与列不同:
 [([1,3])]

zip()函数的应用

矩阵相加减、点乘

也可以使用for循环+列表推导式实现;

m = [[1,4]]
## zip()应用
# 矩阵相加减、点乘
m = [[1,4]]
# 矩阵点乘
print('=*'*10 + "矩阵点乘" + '=*'*10)
print([x*y for a,b in zip(m,n) for x,y in zip(a,b)])
# 矩阵相加,相减雷同
print('=*'*10 + "矩阵相加,相减" + '=*'*10)
print([x+y for a,b)])

输出:

[2,6,12,15,18,28,32,36][3,7,9,11,13]

*zip(*iterables)函数详解

zip(iterables)函数

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

代码示例:

## *zip()函数
print('=*'*10 + "*zip()函数" + '=*'*10)
m = [[1,4]]
print("*zip(m,n)返回:n",*zip(m,n))
m2,n2 = zip(*zip(m,n))
# 若相等,返回True;说明*zip为zip的逆过程
print(m == list(m2) and n == list(n2))

输出:

*zip(m,n)返回:
 ([1,2]) ([4,3]) ([7,4])
 True

总结

本文完整示例:下载示例

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程小技巧。

您可能感兴趣的文章:

  • Python中zip()函数用法实例教程
  • python进阶教程之循环相关函数range、enumerate、zip
  • Python中的zip函数使用示例
  • Python用zip函数同时遍历多个迭代器示例详解
  • python中lambda函数 list comprehension 和 zip函数使用指南
  • Python zip()函数用法实例分析
  • Python学习小技巧之列表项的拼接
  • Python学习小技巧之列表项的推导式与过滤操作
  • Python学习小技巧之列表项的排序
  • Python使用zip合并相邻列表项的方法示例

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读