#encoding:utf-8
"""
并行迭代:
zip
enumerate
获取元素及下标
list解析
iter
""" #zip
# 两个长度相同的列表,求对应元素的和 # 原始做法:
# 当两个元素长度不一致时,这个程序就会出问题,zip可以避免这个问题
def zip_test():
a,b = [1,2,3,4,5],[9,8,7,6,5]
c= []
# for i in range(len(a)):
# c.append(a[i] + b[i])
# return c # 改进
length = len(a) if len(a)<len(b) else len(b)
for i in range(length):
c.append(a[i] + b[i])
return c #zip实现
def zip_test2():
a,b = [1,2,3,4,5],[9,8,7,6,5]
c = []
lst = zip(a,b)
print lst
for x,y in lst:
c.append(x+y)
return c # zip优化
def zip_test3():
a,b = [1,2,3,4,5],[9,8,7,6,5]
return [x+y for x,y in zip(a,b)] #list长度不一,zip获取
def zip_test4():
a= [1,2,3]
b=[11,12,13,14,15]
return zip(a,b) # 结果:[(1, 11), (2, 12), (3, 13)] # 字典执行zip,key视序列,将序列对应的元素一次组成元组,做一个list的元素
def zip_test5():
s = {'name':'bob'}
t = {'language':'python'}
return zip(s,t) #结果:[('name', 'language')] # 颠倒字典的key value的例子
# 方法1:for循环
def zip_test6():
myinfor = {"name":"bob","site":"www.google.com","language":"python"}
new_infor = {}
for k,v in myinfor.items():
new_infor[v] = k
return new_infor # 方法2:zip
def zip_test7():
myinfor = {"name":"bob","site":"www.google.com","language":"python"}
return dict(zip(myinfor.values(),myinfor.keys())) # zip的参数 *iterables
def zip_test8():
list1 = [2,4,6,8]
list2 = [11,13,15,17]
result = zip(list1,list2)
print result #[(2, 11), (4, 13), (6, 15), (8, 17)]
return zip(*result) #[(2, 4, 6, 8), (11, 13, 15, 17)] # enumerate
def enumerate_test():
week = ['monday','sunday','friday']
for i in range(len(week)):
print week[i] + " is " +str(i) # enumerate的方式实现
def enumerate_test2():
week = ['monday','sunday','friday']
for i ,m in enumerate(week):
print week[i] + " is " +str(i) if __name__ =="__main__":
print "-------zip-------"
print zip_test()
print zip_test2()
print zip_test3()
print zip_test4()
print zip_test5()
print zip_test6()
print zip_test7()
print zip_test8()
print "------enumerate----"
enumerate_test()
enumerate_test2()

结果:

-------zip-------
[, , , , ]
[(, ), (, ), (, ), (, ), (, )]
[, , , , ]
[, , , , ]
[(, ), (, ), (, )]
[('name', 'language')]
{'python': 'language', 'bob': 'name', 'www.google.com': 'site'}
{'python': 'language', 'bob': 'name', 'www.google.com': 'site'}
[(, ), (, ), (, ), (, )]
[(, , , ), (, , , )]
------enumerate----
monday is
sunday is
friday is
monday is
sunday is
friday is

迭代函数:zip、enumerate,list解析的更多相关文章

  1. Generator函数执行器-co函数库源码解析

    一.co函数是什么 co 函数库是著名程序员 TJ Holowaychuk 于2013年6月发布的一个小工具,用于 Generator 函数的自动执行.短小精悍只有短短200余行,就可以免去手动编写G ...

  2. Python:内置函数zip()

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

  3. Python内置函数之enumerate() 函数

    enumerate() 函数属于python的内置函数之一: python内置函数参考文档:python内置函数 转载自enumerate参考文档:python-enumerate() 函数 描述 e ...

  4. python3 之 内置函数Zip

    python3 内置函数zip 一.简介: 该函数用于将多个可迭代对象作为参数,依次将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的对象.二.实例1: name = ['张三','李四', ...

  5. python 内置函数zip,map,三元,lambda表达式

    #内置函数zip(),将多个可迭代对象(集合等)按照顺序进行组合成tuple元祖,放在zip 对象进行存储,: #当参数为空时候,返回空 #如果 zip() 函数压缩的两个列表长度不相等,那么 zip ...

  6. javascript学习笔记--迭代函数

    概要 这里的迭代函数指的是对数组对象的操作方法,js数组共有五个迭代函数:every.fifter.forEach.map.some. 1.every every方法,返回值为Boolean类型,tr ...

  7. parse_str() 函数把查询字符串解析到变量中。

    定义和用法 parse_str() 函数把查询字符串解析到变量中. 注释:如果未设置 array 参数,则由该函数设置的变量将覆盖已存在的同名变量. 注释:php.ini 文件中的 magic_quo ...

  8. 混沌分形之迭代函数系统(IFS)

    IFS是分形的重要分支.它是分形图像处理中最富生命力而且最具有广阔应用前景的领域之一.这一工作最早可以追溯到Hutchinson于1981年对自相似集的研究.美国科学家M.F.Barnsley于198 ...

  9. Mathematica 迭代函数

    学习Mathematica迭代函数的几个画图例子: 1.三角形沿着某一点旋转 verticse = {{0, 0}, {1, 0}, {1/2, Sqrt[3]/2}}; tri = Line[ver ...

随机推荐

  1. ExtJs常用布局--layout详解(含实例)

    序言: 笔者用的ExtJs版本:ext-3.2.0 ExtJs常见的布局方式有:border.form.absolute.column.accordion.table.fit.card.anchor ...

  2. 测试开发之Django——No8.Django中的视图与URL配置

    在Django中,页面内容是靠views function(视图函数)来产生,URL定义在URLconf中. 这是一个纯净项目的url配置文件,他存在的目录,是与setting文件在同一个目录中. u ...

  3. 如何通过编译Linux内核打开IPVS(LVS)的debug模式

    前言 为了定位keepalived VIP的问题, 一步一步定位到IPVS, IPVS默认是没有打开Debug模式的, 若需要打开Debug模式需要重新编译IPVS模块加载后才行, 最好的方式当然是仅 ...

  4. mysql8.0CTE实现递归查询

    +----+----------+--------------+| ID | ParentID | name         |+----+----------+--------------+|  1 ...

  5. laravel 事件广播

    Laravel 5.1 之中新加入了事件广播的功能,作用是把服务器中触发的事件通过websocket服务通知客户端,也就是浏览器,客户端js根据接受到的事件,做出相应动作.本文会用简单的代码展示一个事 ...

  6. PHP将数据写入指定文件中

    首先创建一个空的txt文件,这里我们创建了一个1.txt的空文件. 第一种方法:fwrite函数 <?php $file=fopen('1.txt','rb+'); var_dump(fwrit ...

  7. nginx部署网站

    部署单个网站非常简单,只要将网站HTML文件和资源文件(.jpg .css .js等)全部复制到nginx-1.13.12\html目录下. 然后启动 启动进入cmd,切换到nginx-1.13.12 ...

  8. linux下如何使用gdb调试

    gdb是linux下非常好用的一个调试工具,虽然它是命令行模式的调试工具,但是它的功能强大到你无法想象,这里简单介绍下gdb下常用的命令. 首先编译生成可执行文件(这里的test.c是一个简单的求前n ...

  9. POJ 3050 Hopscotch【DFS带回溯】

    POJ 3050 题意: 1.5*5的方阵中,随意挑一格,记住这个格子的数字 2.可以上下左右走,走5次,每走一次记录下所走格子的数字 3.经过以上步骤,把所得6个数字连起来,形成一串数字.求共可以形 ...

  10. asp.net core 微信扫码支付(扫码支付,H5支付,公众号支付,app支付)之1

    2018-08-13更新生成二维码的方法 在做微信支付前,首先要了解你需要什么方式的微信支付,目前本人做过的支付包含扫码支付.H5支付.公众号支付.App支付等,本人使用的是asp.net mvc c ...