zip([iterable, ...])
zip()是Python的一个内建函数,它接受一系列可迭代的对象作为参数,将对象中对应的元素打包成一个个tuple(元组),然后返回由这些tuples组成的list(列表)。 若传入参数的长度不等,则返回list的长度和参数中长度最短的对象相同。利用*号操作符,可以将list unzip(解压)。 一,把list使用zip创建一个元组对的列表
list1 = [1,2,3,4]
list2 = [5,6,7,8]
print zip(list1,list2)
#输出结果是 [(1, 5), (2, 6), (3, 7), (4, 8)]
二:利用for循环支持并行迭代
list1 = [1,2,3,4]
list2 = [5,6,7,8] for (x,y) in zip(list1,list2):
print (x,y, "==",x+y)
# 输出结果是:
# (1, 5, '==', 6)
#(2, 6, '==', 8)
#(3, 7, '==', 10)
#(4, 8, '==', 12)

三:把字符串转换为元组的列表

当两个字符串的长度不同时,zip会以最短序列的长度为准来截断所得到的元组 列表

str1 = "abcd"
str2 = ""
print zip(str1,str2)

输出结果是:[('a', '1'), ('b', '2'), ('c', '3'), ('d', '4')]

四:把元组转换为元组的列表

t1 = (1,2,3)
t2 = (4,5,6)
t3 = (7,8,9)
print list(zip(t1,t2,t3))

输出结果是:[(1, 4, 7), (2, 5, 8), (3, 6, 9)]

五:使用zip构造字典

方法一:使用for循环

k = ["a","b","c"]
v = ["","",""]
d2 = {}
for (k,v) in zip(k,v):d2[k]=v
print d2

方法er:使用dict

k = ["a","b","c"]
v = ["","",""]
d3 = dict(zip(k,v))
print d3

方法一和方法二的输入结果都是  {'a': '1', 'c': '3', 'b': '2'}

六:矩阵的行列互换

第一种方法

  有一个由列表描述的二维矩阵   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]]

第二种方法:

 a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
print zip(*a) 输出结果是:[(1, 4, 7), (2, 5, 8), (3, 6, 9)] print map(list,zip(*a)) 输出结果是:[[1, 4, 7], [2, 5, 8], [3, 6, 9]]

  这种方法速度更快但也更难以理解,将list看成tuple解压,恰好得到我们“行列互换”的效果,再通过对每个元素应用list()函数,将tuple转换为list

Python zip Python zip函数的更多相关文章

  1. python中使用zip函数出现<zip object at 0x02A9E418>

    在Python中使用zip函数,出现<zip object at 0x02A9E418>错误的原因是,你是用的是python2点多的版本,python3.0对python做了改动 zip方 ...

  2. Python中的zip()与*zip()函数详解

    前言 实验环境: Python 3.6: 示例代码地址:下载示例: 本文中元素是指列表.元组.字典等集合类数据类型中的下一级项目(可能是单个元素或嵌套列表). zip(*iterables)函数详解 ...

  3. Python常用内置函数整理(lambda,reduce,zip,filter,map)

    匿名函数lambda lambda argument1,argument2,...argumentN :expression using arguments 1.lambda是一个表达式,而不是一个语 ...

  4. Python:内置函数zip()

    zip函数接受任意多个可迭代对象作为参数,将对象中对应的元素打包成一个tuple,然后返回一个可迭代的zip对象. 这个可迭代对象可以使用循环的方式列出其元素 若多个可迭代对象的长度不一致,则所返回的 ...

  5. (python函数04)zip(*sorted(zip()))

    zip(*sorted(zip())) 用这个玩意儿可以以对两个迭代对象进行排序. 示例代码01  cnts = [2, 4, 3, 6, 5] boundingBoxes = [(730, 20, ...

  6. python中的zip、lambda、map操作

    python 中有几个比较酷炫的操作,比如:zip.lambda.map 一.zip操作 zip字面意思:拉链.这么来记,把几个东西扔到一个包里,拉上拉链,就算打包好了.通俗点讲,就是把第1个参数.与 ...

  7. Python中zip()与zip(*)的用法

    目录 Python中zip()与zip(*)的用法 zip() 知识点来自leetcode最长公共前缀 Python中zip()与zip(*)的用法 可以看成是zip()为压缩,zip(*)是解压 z ...

  8. 一篇文章掌握 Python 内置 zip() 的全部内容

    一篇文章掌握 Python 内置 zip() 的全部内容 zip() 是 Python 中最好用的内置类型之一,它可以接收多个可迭代对象参数,再返回一个迭代器,可以把不同可迭代对象的元素组合起来. 我 ...

  9. Python: 字典dict: zip()

    problem: 怎样在数据字典中执行一些计算操作(比如求最小值.最大值.排序等等)? answer: eg1: 考虑下面的股票名和价格映射字典: prices = {'ACME': 45.23,'A ...

随机推荐

  1. VUE2.0学习总结

    摘要: 年后公司项目开始上vue2.0,自己对学习进行了总结,希望对大家有帮助! VUE2.0学习 vue介绍 vue是什么? https://vuefe.cn/guide vue也是一个数据驱动框架 ...

  2. js中propertyIsEnumerable()方法使用介绍

    javascript的propertyIsEnumerable()方法使用介绍 概述 propertyIsEnumerable()用来检测属性是否属于某个对象的,如果检测到了,返回true,否则fal ...

  3. 启用 Jenkins 持续构建 .NET 程序,关于配置nuget关键点

    网上关于 Jenkins + net 的文章一大堆,这里只贴出 配置中的关键点, 第一步: 从官网下载 nuget.exe 安装包进行安装, 如果项目是用 vs2017 开发的 需要特别注意,nuge ...

  4. sonar如何添加自定义JAVA规则

    参考: 1.https://segmentfault.com/a/1190000008659108 2.https://docs.sonarqube.org/display/DEV/Adding+Co ...

  5. iOS: 环信的推送

    原文:http://m.blog.csdn.net/article/details?id=38824551 1.先创建一个apns证书,链接如下 http://developer.easemob.co ...

  6. 远程操作linux

    import java.io.IOException;import java.io.InputStream;import org.apache.commons.io.IOUtils; import c ...

  7. 如何在 Ubuntu 上搭建网桥

    导读作为一个 Ubuntu 16.04 LTS 的初学者.如何在 Ubuntu 14.04 和 16.04 的主机上搭建网桥呢?顾名思义,网桥的作用是通过物理接口连接内部和外部网络.对于虚拟端口或者 ...

  8. TestNG 一、 概论

    一. 概论         TestNG,即Testing, NextGeneration,下一代测试技术,是一套根据JUnit 和NUnit思想而构建的利用注释来强化测试功能的一个测试框架,即可以用 ...

  9. 使div变成半透明的css样式

    .layer { opacity:0.9; filter:alpha(opacity=90); zoom:1; }

  10. 解决Xcode 6 编译Cocos2d-x iOS项目失败

    在Xcode 6 beta里编译Cocos2d-x iOS项目时可能会失败,提示如下错误: Undefined symbols for architecture i386: "_fwrite ...