-
2020-12-10 11:31:31
博友们,你们好,很高兴能在这里和大家分享技术文章,我是
Amo Xiang
,是一名在职企业员工,Amo
来源于上家公司的英文名,本意是爱
。作为刚入行几年互联网行业的小白,博主写博客一方面是为了记录自己的学习过程以及所犯的错误,更多的是希望能够帮助到很多处于起步阶段的萌新,让他们少走弯路。在编写文章时,参考了大量书籍及一些互联网大佬的资源,并结合了自己的工作经验,博主本着科学、严谨的态度、力求精益求精,但疏漏之处在所难免,敬请广大博友批评指正。博客主页:https://blog.csdn.net/xw1680?spm=1011.2124.3001.5113更多相关内容 -
Python中的zip函数使用示例
2020-12-25 01:17:08zip函数接受任意多个(包括0个和1个)序列作为参数,返回一个tuple列表。具体意思不好用文字来表述,直接看示例: 1.示例1: 复制代码 代码如下: x = [1, 2, 3] y = [4, 5, 6] z = [7, 8, 9] xyz = zip(x, y, z) ... -
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-17 14:59:20zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。 ps. 如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组... -
Python zip函数打包元素实例解析
2020-09-18 07:44:45主要介绍了Python zip函数打包元素实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 -
Python的zip函数.pdf
2021-08-26 15:23:24Python的zip函数.pdf -
对Python的zip函数妙用,旋转矩阵详解
2020-09-19 20:33:45今天小编就为大家分享一篇对Python的zip函数妙用,旋转矩阵详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧 -
zip函数
2020-07-09 16:07:56zip函数打包解包 打包 zip()函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。 如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同 list1 = [1,2...打包
zip()函数
用于将可迭代的对象
作为参数,将对象中对应的元素打包成一个个元组
,然后返回由这些元组组成的列表
。如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同
list1 = [1,2,3,4,5] list2 = ["hello","good","nice","haha"] set3 = {True,False,None,0} zipobj = zip(list1,list2,set3) # 打包 print(zipobj) # 这是一个包,显示的是包所在的地址 <zip object at 0x00000149CFFFAB48> print(list(zipobj)) #可以将包转化为列表,查看包中的内容 # 打印结果为 [(1, 'hello', False), (2, 'good', True), (3, 'nice', None)]
对于打印的结果,或许多多少少都会有一些疑惑,这里逐一进行解释
1、为什么列表中的元组只有3个?
首先看一下
set3
,这是一个set集合
,set集合
有两个特点:去重
、无序
。打印一下
set3
,会发现,得到的结果是{False, True, None}
,因为在这里,0=False
,所以set3
里,其实只有三个元素。
虽然set集合
是无序的,但是底层代码逻辑,还是以某种规则对元素内容进行了排序,False
就排到了True
前面,这一点就不再详细进行说明。2、打包的具体过程
- 首先在
list1
中取出元素1
,在list2
中取出元素hello
,在set3
中取出元素False
,组成了第一个元组(1, 'hello', False)
; - 然后在
list1
中取出元素2
,在list2
中取出元素good
,在set3
中取出元素True
,组成了第二个元组(2, 'good', True)
; - 在
list1
中取出元素3
,在list2
中取出元素nice
,在set3
中取出元素None
,组成了第三个元组(3, 'nice', None)
; set3
里只有三个元素,所以,list1
和list2
中剩余的元素就被舍弃,最后,将三个元组放入列表中,[(1, 'hello', False), (2, 'good', True), (3, 'nice', None)]
,最终打包完成。
解包
zip()函数
可以对zip对象
进行解包处理语法:
zip(*zipobj)
list1 = [1,2,3,4,5] list2 = ["hello","good","nice","haha"] set3 = {True,False,None,0} zipobj = zip(list1,list2,set3 ) # 打包 print(zip(*zipobj)) #解包 显示的也是一串地址 <zip object at 0x000001B34E5FAB88> # 若想查看解包的内容,可使用for循环打印(需将上一步print注释,因为上一步中已经解包) for i in zip(*zipobj): print(i) # 打印结果 (1, 2, 3) ('hello', 'good', 'nice') (False, True, None)
上面已经详细描述了打包的过程,而解包,其实就是将打包的过程逆转。最终打包的结果是
[(1, 'hello', False), (2, 'good', True), (3, 'nice', None)]
- 列表中有三个元组,第一个元组
(1, 'hello', False)
,第二个元组(2, 'good', True)
,第三个元组(3, 'nice', None)
。 - 将第一个元组中的
1
取出,第二个元组中的2
取出,第三个元组中的3
取出,重新组成第一个新的元组(1, 2, 3)
; - 将第一个元组中的
hello
取出,第二个元组中的good
取出,第三个元组中的nice
取出,重新组成第二个新的元组('hello', 'good', 'nice')
; - 将第一个元组中的
False
取出,第二个元组中的True
取出,第三个元组中的None
取出,重新组成第三个新的元组(1, 2, 3)
; - 最后,通过for循环,将三个新的元组打印出来
- 首先在
-
python中使用zip函数出现zip object at 0x02A9E418错误的原因
2020-12-24 04:55:25python中zip函数返回一个以元组为元素的列表,其中第 i 个元组包含每个参数序列的第 i 个元素。返回的列表长度被截断为最短的参数序列的长度。只有一个序列参数时,它返回一个1元组的列表。没有参数时,它返回一个空... -
Python用zip函数同时遍历多个迭代器示例详解
2020-12-24 22:25:58本文主要介绍的是Python如何使用zip函数同时遍历多个迭代器,文中的版本为Python3,zip函数是Python内置的函数。下面话不多说,来看详细的内容。 应用举例 >>> list1 = ['a', 'b', 'c', 'd'] >>> list2 = ['apple... -
Python学习系列之zip函数
2021-01-12 11:37:05目录一、zip函数(内建函数)1.1 定义Python 2:zip()函数用于将可迭代的对象(字典,列表,元组,集合,字符串等)作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。Python 3:zip()函数...目录
一、zip函数(内建函数)
1.1 定义
Python 2:zip() 函数用于将可迭代的对象(字典,列表,元组,集合,字符串等)作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。
Python 3:zip()函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的对象,这样做的好处是节约了不少的内存。我们可以使用 list() 转换来输出列表。
Python2和Python3只是返回值不同,用法相同。
如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。
zip 方法在 Python 2 和 Python 3 中的不同:在 Python 3.x 中为了减少内存,zip() 返回的是一个对象。如需展示列表,需手动 list() 转换。
基本语法:
zip([iterable, ...])
参数说明:
iterabl -- 一个或多个迭代器;
返回值:
Python2 返回元组列表。
Python3 返回一个对象。
示例:
Python 2
>>> 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) # 与 zip 相反,*zipped 可理解为解压,返回二维矩阵式
[(1, 2, 3), (4, 5, 6)]
>>> list(zip(*zipped)[1]) # 与 zip 相反,*zipped 可理解为解压,严格讲还是元组列表,
[4, 5, 6] # 不过元组可以转为列表
Python 3
>>> a = [1,2,3]
>>> b = [4,5,6]
>>> c = [4,5,6,7,8]
>>> zipped = zip(a,b) # 返回一个对象
>>> zipped
>>> list(zipped) # list() 转换为列表
[(1, 4), (2, 5), (3, 6)]
>>> list(zip(a,c)) # 元素个数与最短的列表一致
[(1, 4), (2, 5), (3, 6)]
>>> zip(*zip(a,b))
# 返回一个对象
>>> list(zip(*zip(a,b)))
[(1, 2, 3), (4, 5, 6)]
>>> a1, a2 = zip(*zip(a,b)) # 与 zip 相反,zip(*) 可理解为解压,返回二维矩阵式
>>> a1
(1, 2, 3)
>>> a2
(4, 5, 6)
>>> list(a1) # 转换为列表
[1, 2, 3]
>>> list(a2)
[4, 5, 6]
1.2 处理列表
通过 zip() 函数及for循环对多个列表进行并行迭代:
>>> days = ['Monday', 'Tuesday', 'Wednesday']
>>> fruits = ['banana', 'orange', 'peach']
>>> drinks = ['coffee', 'tea', 'beer']
>>> desserts = ['tiramisu', 'ice cream', 'pie', 'pudding']
>>> for day, fruit, drink, dessert in zip(days, fruits, drinks, desserts):
... print(day, ": drink", drink, "- eat", fruit, "- enjoy", dessert)
...
Monday : drink coffee - eat banana - enjoy tiramisu
Tuesday : drink tea - eat orange - enjoy ice cream
Wednesday : drink beer - eat peach - enjoy pie
zip() 函数在最短列表“用完”时就会停止。上面例子中的列表(desserts)是最长的,所以我们无法填充列表,除非人工扩展其他列表。按照最短列表停止遍历。使用 zip() 函数可以遍历多个列表,在具有相同位移的项之间创建元组。
1.3 处理元组
现在使用 zip() 函数配对两个元组。函数的返回值既不是元组也不是列表,而是一个整合在一起的可迭代变量(可迭代的元组):
>>> english = 'Monday', 'Tuesday', 'Wednesday' # 这种创建的方式类型是元组
>>> french = 'Lundi', 'Mardi', 'Mercredi'
>>> list( zip(english, french) )
[('Monday', 'Lundi'), ('Tuesday', 'Mardi'), ('Wednesday', 'Mercredi')]
1.4 处理字典
配合 dict() 函数和 zip() 函数的返回值就可以得到一本微型的英法词典:
>>> dict( zip(english, french) )
{'Monday': 'Lundi', 'Tuesday': 'Mardi', 'Wednesday': 'Mercredi'}
构建字典:
方法一:使用for循环
k = ["a","b","c"]
v = ["1","2","3"]
d2 = {}
for (k,v) in zip(k,v):d2[k]=v
print d2
方法二:使用dict
k = ["a","b","c"]
v = ["1","2","3"]
list(zip(k,v))
[('a', '1'), ('b', '2'), ('c', '3')]
d3 = dict(zip(k,v)) # 类型转换
print d3
1.5 处理一个参数和空列表
zip函数在只有一个参数时:
x = [1, 2, 3]
x = zip(x)
print x
[(1,), (2,), (3,)]
zip函数在没有参数时:
x = zip()
print x
[]
标签:函数,zip,Python,zipped,list,元组,列表
来源: https://blog.csdn.net/answer3lin/article/details/86505410
-
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
-
2. Python中的zip函数
2022-02-20 20:28:53《Python编程的术与道:...zip函数 内置的 zip 函数可以并行的对多个可迭代对象进行处理。 The zip() function takes iterables (can be zero or more), aggregates them in a tuple, and return it. number_list = [1, -
【python】zip函数详解
2021-10-03 11:51:10文章目录1.zip函数的作用2. 语法3. 转成列表4. 解压 zip(*iterables)5. *zip( ) 1.zip函数的作用 zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的对象(python... -
Python之zip函数相关介绍
2020-12-06 03:14:47python3的zip函数zip函数接受任意多个可迭代对象作为参数,将对象中对应的元素打包成一个tuple,然后返回一个可迭代的zip对象。这个可迭代对象可以使用循环的方式列出其元素,若多个可迭代对象的长度不一致,则所返回... -
Python教程:zip 函数的用法
2022-03-08 14:58:09Python3.0开始,zip()函数已经不返回 list 了,而是返回 iterable(可迭代对象)。这个可迭代对象需要特别注意,只能进行一次迭代遍历,第二次遍历就是空了。这个坑了我一个多小时。 简单示例 a = [1, 2, 3] b = [4, -
python中的 zip函数详解及用法举例
2020-12-20 16:09:39python中zip()函数用法举例 定义:zip([iterable, …]) zip()是Python的一个内建函数,它接受一系列可迭代的对象作为参数,将对象中对应的元素打包成一个个tuple(元组),然后返回由这些tuples组成的list(列表)... -
Python:zip函数的主要用途
2022-03-26 22:37:57个人理解:zip函数主要用来将n个list中相同location的元素取出来,组成新的data years = [22,23,24] names = ['hjw','hyr','lyq'] a = zip(names,years) print(a) # <zip object at 0x000001A69F80F0C0> ... -
zip函数的讲解与简单应用
2020-12-04 09:36:37zip函数,看的话都应该认识这是压缩的意思,但是怎么用呐? 这里写目录标题zip函数的用法zip(*zipped)的应用zip函数的具体应用 zip函数的用法 zip是用来压缩的,它接受一系列可迭代的对象作为参数,将对象中对应的... -
Python zip函数及用法
2020-12-17 21:46:46zip() 函数是Python内嵌函数之一,它能够将好几个序列(列表、元组、字典、结合、字符串数组及其 range() 区段组成的列表)“缩小”成一个 zip 目标。说白了“缩小”,实际上便是将这种序列中相匹配部位的原素重新排列... -
python中lambda函数 list comprehension 和 zip函数使用指南
2020-12-25 10:33:58lambda 函数 Python 支持一种有趣的语法,它允许你快速定义单行的最小函数。这些叫做 lambda 的函数,是从 Lisp 借用来的,可以用在任何需要函数的地方。 def f(x): return x*2,用lambda函数来替换可以写成:g = ... -
Python zip函数
2019-07-12 11:45:47Python内置函数zip() 介绍、使用方法和注意事项。 -
python中使用zip函数出现<zip object at 0x02A9E418>错误的原因
2020-09-20 02:20:43主要介绍了python中使用zip函数出现<zip>错误的原因分析及解决方法,需要的朋友可以参考下