python中zip函数详解_Python中zip函数用法
看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函数详解_Python中zip函数用法相关推荐
- python average函数详解_python基础之函数详解
Python基础之函数详解 一.函数的定义 到现在为止,我们已经掌握了Python的基本语法和数据类型等相关基础知识了,以进行一个项目的编写了,这个时候,就会发现,很多代码需要我们进行复制粘贴,这简直 ...
- python int函数详解_Python内置函数OCT详解
英文文档:oct ( x ) Convert an integer number to an octal string. The result is a valid Python expression ...
- python中的zip函数详解_python中的 zip函数详解
python中zip()函数用法举例 定义:zip([iterable, ...]) zip()是Python的一个内建函数,它接受一系列可迭代的对象作为参数,将对象中对应的元素打包成一个个tuple ...
- python中init函数详解_Python 中__init__函数以及参数self
Java网站链接:Java全栈工程师 | 以实例驱动学习 | how2j.cn 1)class类包含: 类的属性:类中所涉及的变量 类的方法:类中函数 2) __init函数(方法) 1.带有两个下划 ...
- python中的import详解_python中的import
Python 中的模块和包 模块(module):包含定义的类/函数/变量的文件,后缀是.py.Python代码的可重用性由此保证 包(package):由模块或者子模块组成的Python应用程序执行 ...
- python中index方法详解_Python中的index()方法使用教程
index()方法确定字符串str,如果起始索引beg和结束索引end在末尾给出了找到字符串或字符串的一个子串.这个方法与find()方法一样,只是如果没有找到子符趾会抛出一个异常. 语法 以下是in ...
- python average函数详解_Python内置函数详解——总结篇
https://www.cnblogs.com/sesshoumaru/category/894935.html 2个多月来,将3.5版本中的68个内置函数,按顺序逐个进行了自认为详细的解析,现在是时 ...
- python算术运算符详解_Python中关于算术运算符的实例详解
这篇文章主要介绍了Python算术运算符实例详解的相关资料,需要的朋友可以参考下 Python算术运算符 以下假设变量a为10,变量b为20: 运算符 描述 实例 + 加 - 两个对象相加 a + b ...
- php switch 函数,详解PHP中switch的使用
switch 语句用于基于不同条件执行不同动作.本文给大家介绍php中的switch语句的用法实例详解,涉及到switch用法方面的知识点,对switch用法感兴趣的朋友通过本文一起学习吧.希望对大家 ...
最新文章
- jenkins+ant+jmeter接口测试
- matlab rank函数报错,Matlab signrank函数(Wilcoxon signed rank test)中的矛盾结果[重复]
- php 写入exif,PHP写入读取图片自定义信息_exif或者什么的?
- python 嵌套字典key_查找和修改python嵌套字典(key,value)
- JAVA语言中的反射机制
- Session在类库中的使用
- ios自定义控件,使UIScrollView自己处理输入时键盘遮挡控件
- 《全唐诗》前言和后记
- python杨辉三角函数_Python算法之六:杨辉三角
- 解决WEB页面上焦点控制一法
- 【安装包】VC++6.0
- python warning_warning最新:Python 忽略warning的输出方法_爱安网 LoveAn.com
- mac上安装和启动kafka
- matlab实现卷积编码与viterbi译码
- 逍遥模拟器安装激活面具magisk教程
- 基于微信小程序的信件收发管理平台设计
- 【雕爷学编程】Arduino动手做(67)---BMP180气压传感器
- 2022最全windows 上传ipa到苹果方法
- 配平化学方程式的C++代码实现
- 地铁供电系统原理图_地铁小百科——带你认识地铁供电系统