看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函数用法相关推荐

  1. python average函数详解_python基础之函数详解

    Python基础之函数详解 一.函数的定义 到现在为止,我们已经掌握了Python的基本语法和数据类型等相关基础知识了,以进行一个项目的编写了,这个时候,就会发现,很多代码需要我们进行复制粘贴,这简直 ...

  2. python int函数详解_Python内置函数OCT详解

    英文文档:oct ( x ) Convert an integer number to an octal string. The result is a valid Python expression ...

  3. python中的zip函数详解_python中的 zip函数详解

    python中zip()函数用法举例 定义:zip([iterable, ...]) zip()是Python的一个内建函数,它接受一系列可迭代的对象作为参数,将对象中对应的元素打包成一个个tuple ...

  4. python中init函数详解_Python 中__init__函数以及参数self

    Java网站链接:Java全栈工程师 | 以实例驱动学习 | how2j.cn 1)class类包含: 类的属性:类中所涉及的变量 类的方法:类中函数 2) __init函数(方法) 1.带有两个下划 ...

  5. python中的import详解_python中的import

    Python 中的模块和包 模块(module):包含定义的类/函数/变量的文件,后缀是.py.Python代码的可重用性由此保证 包(package):由模块或者子模块组成的Python应用程序执行 ...

  6. python中index方法详解_Python中的index()方法使用教程

    index()方法确定字符串str,如果起始索引beg和结束索引end在末尾给出了找到字符串或字符串的一个子串.这个方法与find()方法一样,只是如果没有找到子符趾会抛出一个异常. 语法 以下是in ...

  7. python average函数详解_Python内置函数详解——总结篇

    https://www.cnblogs.com/sesshoumaru/category/894935.html 2个多月来,将3.5版本中的68个内置函数,按顺序逐个进行了自认为详细的解析,现在是时 ...

  8. python算术运算符详解_Python中关于算术运算符的实例详解

    这篇文章主要介绍了Python算术运算符实例详解的相关资料,需要的朋友可以参考下 Python算术运算符 以下假设变量a为10,变量b为20: 运算符 描述 实例 + 加 - 两个对象相加 a + b ...

  9. php switch 函数,详解PHP中switch的使用

    switch 语句用于基于不同条件执行不同动作.本文给大家介绍php中的switch语句的用法实例详解,涉及到switch用法方面的知识点,对switch用法感兴趣的朋友通过本文一起学习吧.希望对大家 ...

最新文章

  1. jenkins+ant+jmeter接口测试
  2. matlab rank函数报错,Matlab signrank函数(Wilcoxon signed rank test)中的矛盾结果[重复]
  3. php 写入exif,PHP写入读取图片自定义信息_exif或者什么的?
  4. python 嵌套字典key_查找和修改python嵌套字典(key,value)
  5. JAVA语言中的反射机制
  6. Session在类库中的使用
  7. ios自定义控件,使UIScrollView自己处理输入时键盘遮挡控件
  8. 《全唐诗》前言和后记
  9. python杨辉三角函数_Python算法之六:杨辉三角
  10. 解决WEB页面上焦点控制一法
  11. 【安装包】VC++6.0
  12. python warning_warning最新:Python 忽略warning的输出方法_爱安网 LoveAn.com
  13. mac上安装和启动kafka
  14. matlab实现卷积编码与viterbi译码
  15. 逍遥模拟器安装激活面具magisk教程
  16. 基于微信小程序的信件收发管理平台设计
  17. 【雕爷学编程】Arduino动手做(67)---BMP180气压传感器
  18. 2022最全windows 上传ipa到苹果方法
  19. 配平化学方程式的C++代码实现
  20. 地铁供电系统原理图_地铁小百科——带你认识地铁供电系统

热门文章

  1. ESYE2021上海快递物流展,物流业高质量服务与全新解决方案
  2. 个人养老金账户来了|关于养老三支柱
  3. winscp拒绝连接问题
  4. [转载] 增加外链的方法汇总
  5. wepy集成vantweapp开发
  6. ELK日志中心集群,看完工资+1k
  7. 1.Django安装与简单使用
  8. remote-cloudflare-kv 在 Vercel 上使用 Cloudflare KV
  9. 中国CFA证书的真实年薪是多少钱?
  10. echarts折线图数据配置