-
2020-12-10 11:31:31
博友们,你们好,很高兴能在这里和大家分享技术文章,我是
Amo Xiang
,是一名在职企业员工,Amo
来源于上家公司的英文名,本意是爱
。作为刚入行几年互联网行业的小白,博主写博客一方面是为了记录自己的学习过程以及所犯的错误,更多的是希望能够帮助到很多处于起步阶段的萌新,让他们少走弯路。在编写文章时,参考了大量书籍及一些互联网大佬的资源,并结合了自己的工作经验,博主本着科学、严谨的态度、力求精益求精,但疏漏之处在所难免,敬请广大博友批评指正。博客主页:https://blog.csdn.net/xw1680?spm=1011.2124.3001.5113更多相关内容 -
Python中zip函数用法
2021-03-17 17:21:10看openstack的代码,遇到一个内建函数zip不明白其意思:# Adjust the weights in the grid by the functions weight adjustment# and sum them up to get a final list of weights.adjusted_scores = []for (weight,...看openstack的代码,遇到一个内建函数zip不明白其意思:
# Adjust the weights in the grid by the functions weight adjustment
# and sum them up to get a final list of weights.
adjusted_scores = []
for (weight, fn), row in zip(weighted_fns, scores):
adjusted_scores.append([weight * score for score in row])
有一个简单易懂的例子,有2个列表A,B,A存了班级里的人的名字,B是每个人的考试分数,你需要通过某个人的名字来查考试分数,那你需要一个字典,zip可以很方便地帮你建立字典:
>>> x=['bob','tom','kitty']
>>> y=[80,90,95]
>>>d=dict(zip(x,y))
[('bob', 80), ('tom', 90), ('kitty', 95)]
zip()是Python的一个内建函数,它接受一系列可迭代的对象作为参数,将对象中对应的元素打包成一个个tuple(元组),然后返回由这些tuples组成的list(列表)。若传入参数的长度不等,则返回list的长度和参数中长度最短的对象相同。利用*号操作符,可以将list unzip(解压),看下面的例子就明白了: >>> a = [1,2,3]
>>> b = [4,5,6]
>>> c = [4,5,6,7,8]
>>> zipped = zip(a,b)
[(1, 4), (2, 5), (3, 6)]
>>> zip(a,c)
[(1, 4), (2, 5), (3, 6)]
>>> zip(*zipped)
[(1, 2, 3), (4, 5, 6)]
对于这个并不是很常用函数,下面举几个例子说明它的用法:
* 二维矩阵变换(矩阵的行列互换)
比如我们有一个由列表描述的二维矩阵
a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
通过python列表推导的方法,我们也能轻易完成这个任务
print [ [row[col] for row in a] for col in range(len(a[0]))]
[[1, 4, 7], [2, 5, 8], [3, 6, 9]]
另外一种让人困惑的方法就是利用zip函数:
>>> a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
>>> zip(*a)
[(1, 4, 7), (2, 5, 8), (3, 6, 9)]
>>> map(list,zip(*a))
[[1, 4, 7], [2, 5, 8], [3, 6, 9]]
zip函数接受任意多个序列作为参数,将所有序列按相同的索引组合成一个元素是各个序列合并成的tuple的新序列,新的序列的长度以参数中最短的序列为准。另外(*)操作符与zip函数配合可以实现与zip相反的功能,即将合并的序列拆成多个tuple。
①tuple的新序列
>>>>x=[1,2,3],y=['a','b','c']
>>>zip(x,y)
[(1,'a'),(2,'b'),(3,'c')]
②新的序列的长度以参数中最短的序列为准.
>>>>x=[1,2],y=['a','b','c']
>>>zip(x,y)
[(1,'a'),(2,'b')]
③(*)操作符与zip函数配合可以实现与zip相反的功能,即将合并的序列拆成多个tuple。
>>>>x=[1,2,3],y=['a','b','c']
>>>>zip(*zip(x,y))
[(1,2,3),('a','b','c')]
参考文献:
http://blog.sina.com.cn/s/blog_7ae1b8300100x05p.html
http://zhidao.baidu.com/question/403657760.html
-
Python中zip函数如何使用
2020-12-17 14:59:20zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。 ps. 如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组... -
Python教程:zip 函数的用法
2022-03-08 14:58:09Python3.0开始,zip()函数已经不返回 list 了,而是返回 iterable(可迭代对象)。这个可迭代对象需要特别注意,只能进行一次迭代遍历,第二次遍历就是空了。这个坑了我一个多小时。 简单示例 a = [1, 2, 3] b = [4,zip() 接受一系列可迭代的对象作为参数,将对象中对应的元素打包成一个个 tuple,然后返回由这些 tuple 组成的 list。
若传入参数的长度不等,则返回 list 的长度和参数中长度最短的对象相同。
利用 * 号操作符,可以将 list 解压。
Python3.0开始,zip()函数已经不返回 list 了,而是返回 iterable(可迭代对象)。这个可迭代对象需要特别注意,只能进行一次迭代遍历,第二次遍历就是空了。这个坑了我一个多小时。
简单示例
a = [1, 2, 3] b = [4, 5, 6] c = [7, 8, 9, 10, 11] ab = zip(a, b) print(list(ab)) # [(1, 4), (2, 5), (3, 6)] # zip()之后的结果只能“使用一次” # zip()实际上是一个生成器对象,故使用list()获取zip()结果时,已经相当于是完成一次迭代遍历 # 第二次再次使用list()时迭代已经结束,所以返回[] print(list(ab)) # [] ac = zip(a, c) # print(list(ac)) # [(1, 4), (2, 5), (3, 6)],以短的为准 _ac = zip(*ac) # 与 zip 相反,可理解为解压,返回二维矩阵式 print(list(_ac)) # [(1, 2, 3), (7, 8, 9)],如果没把上面的 print(list(ac)) 注掉,这里的显示结果就是[]了
应用示例 一
''' 学习中遇到问题没人解答?小编创建了一个Python学习交流QQ群:725638078 寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书! ''' print('应用示例一') name = ('jack', 'alex', 'sony', 'joey') age = (25, 28, 21, 30) for a, n in zip(name, age): print(a, n)
应用示例 二:二维矩阵行列转换
print('应用示例二') a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] print(list(map(list, zip(*a)))) # [[1, 4, 7], [2, 5, 8], [3, 6, 9]], map()函数把zip(*a)后的每一个元素转化为list
-
python中zip函数有哪些高级用法
2020-11-26 02:46:42展开全部zip() 功能是从参数的多个迭代器中62616964757a...元组、列表、字典等迭代器它返回一个zip对象,其内部元素为元组,一组一组的,可以转化为列表或元组,这里要强调一下,Python2和Python3中返回的zi...展开全部
zip() 功能是从参数的多个迭代器中62616964757a686964616fe59b9ee7ad9431333365653163选取元素组合成一个新的迭代器。顾名思义,它就是一个将对象进行打包和解包的函数。
它可以传入的参数包括;元组、列表、字典等迭代器
它返回一个zip对象,其内部元素为元组,一组一组的,可以转化为列表或元组,这里要强调一下,Python2和Python3中返回的zip对象有所不同。
Python3中zip()函数再不再返回list对象,但是可以通过list强行转换。(类似的函数变化还有dictionary关联的keys()、values()、items(),map(),filter())。
打包zip(iterables)
上面的代码使用的环境是Python3.6,其中list (z)操作就是强制转换。注意一个问题,a和b这两个列表是不同长短的,这时候zip函数就会匹配完最短的那个便结束。
当zip函数的参数只有一个时,它将从iterable中依次取一个元素,组成一个元组。
解包zip(*iterables)
解包,zip 相反,可理解为解压,返回多维矩阵形式,有几个组元素就返回几维的。
比如,下面我是用三个列表组合起来的迭代式,那么解压后就返回三维的矩阵
zip高级用法
讲完了基本的再来说一下该函数的高级用法。高级用法离不开一个词:Pythonic,就是将代码写的更优雅美观,看起来有逼格!
1. 列表推导
例如:
a = [1,2,3,4]
b = [5,6,7,8]
我们要同时遍历a、b,且要对它们进行操作,那就要放在同一个for循环内,zip函数正好合适
注意:如果是Python2环境中,要使用izip才能提高效率。
当然,如果你需要对下标进行操作,那么还需要加上enumerate函数
2. 使用zip创建键值对,zip方法返回的是一个元组,用它来创建键值对,简单明了。
-
Python中zip()函数用法实例教程
2020-12-23 14:51:12本文实例讲述了Python中zip()函数的定义及用法,相信对于Python初学者有一定的借鉴价值。详情如下: 一、定义: zip([iterable, …]) zip()是Python的一个内建函数,它接受一系列可迭代的对象作为参数,将对象中对应... -
python中使用zip函数出现zip object at 0x02A9E418错误的原因
2020-12-24 04:55:25python中zip函数返回一个以元组为...在Python中使用zip函数,出现<zip>错误的原因是,你是用的是python2点多的版本,python3.0对python做了改动 zip方法在Python 2 和Python 3中的不同 为何有这种不同 更多注解 问题 -
Python zip函数及用法
2022-03-24 12:28:50Python zip函数及用法 zip() 函数是 Python 内置函数之一,它可以将多个序列(列表、元组、字典、集合、字符串以及 range() 区间构成的列表)“压缩”成一个 zip 对象。所谓“压缩”,其实就是将这些序列中对应位置... -
python3中zip()函数使用详解
2020-09-20 07:51:00zip函数接受任意多个可迭代对象作为参数,将对象中对应的元素打包成一个tuple,然后返回一个可迭代的zip对象.这个可迭代对象可以使用循环的方式列出其元素,若多个可迭代对象的长度不一致,则所返回的列表与长度最短的可... -
对Python的zip函数妙用,旋转矩阵详解
2020-09-19 20:33:45今天小编就为大家分享一篇对Python的zip函数妙用,旋转矩阵详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧 -
Python中zip()函数的简单用法举例
2020-09-18 17:01:05主要给大家介绍了关于Python中zip()函数的简单用法,文中通过示例代码介绍的非常详细,对大家学习或者使用Python具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧 -
Python range、enumerate和zip函数用法详解
2020-12-31 17:22:35zip函数用于同时遍历多个迭代器。 一、range 函数 range函数可创建一个整数列表,一般用在 for 循环中。 语法: range([start,] stop[, step]) 参数: start: 计数从 start 开始。默认是从 0 开始。例如range(5)... -
python中的 zip函数详解及用法举例
2020-12-20 16:09:39python中zip()函数用法举例 定义:zip([iterable, …]) zip()是Python的一个内建函数,它接受一系列可迭代的对象作为参数,将对象中对应的元素打包成一个个tuple(元组),然后返回由这些tuples组成的list(列表)... -
Python zip()函数用法实例分析
2021-02-03 10:13:57本文实例讲述了python zip()函数用法。分享给大家供大家参考,具体如下:这里介绍python中zip()函数的使用: >>> help(zip)Help on built-in function zip in module __builtin__:zip(...)zip(seq1 [, seq2... -
python zip 内置函数的使用
2020-12-16 00:36:22定义:zip([iterable, ...])zip()是Python的一个内建函数,它接受一系列可迭代的对象作为参数,将对象中对应的元素打包成一个个tuple(元组),然后返回由这些tuples组成的list(列表)。若传入参数的长度不等,则返回... -
Python中的zip函数用法是什么
2020-12-03 12:34:33共 1 个关于“Python中的zip函数怎么用”精选答案码小辫推荐于:2020-06-17zip函数接受任意多个(包括0个和1个)序列作为参数,返回一个tuple列表。直接看示例:1.示例1:代码如下:x=[1,2,3]y=[4,5,6]z=[7,8,9]xyz=zip... -
python zip() 函数用法
2022-05-11 23:45:44在 python 多个列表对应位置元素求和...在 python2中,zip()函数直接返回一个包含元组的列表。 而在 python3中,zip()函数返回的是一个对象。需要用 list()或tuple()把这个对象转成列表或元组。 比如在 python3.7中: -
python zip()函数详解
2021-12-03 16:42:04zip() 函数是python内置函数之一,可以将多个序列(列表,元组,字典,字符串以及range()区间构成的列表)压缩成一个zip对象,就是将这些序列中对应的位置元素重新组合生成一个个新的元组 zip() 函数的语法格式为: zip... -
python zip用法_Python zip函数及用法
2020-11-30 12:41:07zip() 函数可以把两个列表“压缩”成一个 zip 对象(可迭代对象),这样就可以使用一个循环并行遍历两个列表。为了测试 zip() 函数的功能,我们可以先在交互式解释器中“试验”一下该函数的功能。>>> a = ['a','b','... -
Python内置函数zip()函数详解
2022-04-16 19:32:48功能:zip 函数是可以接收多个可迭代对象,然后把每个可迭代对象中的第i个元素组合在一起,形成一个新的迭代器,类型为元组。 参数:*iterables,任意个的可迭代对象 返回值:返回一个元组的迭代器 a=[1,2,3] b=...