#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. springmvc和mybatis整合关键配置

    springmvc+mybaits的系统架构: 第一步:整合dao层 mybatis和spring整合,通过spring管理mapper接口. 使用mapper的扫描器自动扫描mapper接口在spr ...

  2. CentOS6.5编译安装Nginx1.8.1+MySQL5.5.48+PHP5.2.17+xcache3.2+ZendOptimizer-3.3.9

    一.安装Nginx: 1.解决依赖关系 编译安装nginx需要事先需要安装开发包组"Development Tools"和 "Development Libraries& ...

  3. Expm 9_1 有向图中环的判断问题

    [问题描述] 给定一个有向图,要求使用深度优先搜索策略,判断图中是否存在环. package org.xiu68.exp.exp9; public class Exp9_1 { //用深度优先搜索判断 ...

  4. jmeter之正则表达式

    一.Jmeter关联的方式: Jmeter中关联可以在需要获取数据的请求上 右键-->后置处理器 选择需要的关联方式,如下图有很多种方法可以提取动态变化数据: 二.正则表达式提取器: 1.比如需 ...

  5. .net core定时任务

    1.HangFire HangFire官网 Hangfire项目实践分享 :  讲解的比较详细 2.Quartz.NET https://www.cnblogs.com/best/p/7658573. ...

  6. 从LeNet-5到DenseNet

    一篇不错的总结:https://zhuanlan.zhihu.com/p/31006686

  7. Spatial Transformer Networks

    参考:http://blog.csdn.net/xbinworld/article/details/69049680 论文的关键在理解这句话: 先通过V中坐标(xtarget,ytarget)以此找到 ...

  8. poj2155二维树状数组区间更新

    垃圾poj又交不上题了,也不知道自己写的对不对 /* 给定一个矩阵,初始化为0:两种操作 第一种把一块子矩阵里的值翻转:0->1,1->0 第二种询问某个单元的值 直接累计单元格被覆盖的次 ...

  9. 性能测试二十四:环境部署之Redis多实例部署

    由于redis服务端是单线程实现的,因此只能占用CPU的单核,为了充分利用CPU资源,可以在一台服务器上同时启动多个redis-server实例 首先删除之前的rdb.aof文件 注释掉3个save ...

  10. 【C++ Primer 第10章】 10.4.1 插入迭代器

    目录 •  iostream迭代器 •  反向迭代器 插入迭代器 插入迭代器,这些迭代器被绑定到一个容器上,可以向容器插入元素. 头文件为:#include<iterator it=t 在it指 ...