1. #python3 学习笔记17/07/10
  2. # !/usr/bin/env python3
  3. # -*- coding:utf-8 -*-
  4.  
  5. #类似 其他语言的for循环,但是比for抽象程度更高
  6. # for ... in
  7.  
  8. #通过collections模块的 Iterable 类型判断一个对象是否可以迭代
  9. from collections import Iterable
  10. from collections import Iterator
  11.  
  12. #list 有下标可以迭代,dict 没有下标,也可以迭代
  13. d = {"a":1,"b":2,"c":3}
  14. #dict 默认是迭代 key的,且dict的迭代结果顺序可能不一样
  15. for key in d:
  16. print(key)
  17.  
  18. #如果要迭代value ,需这样做
  19. for value in d.values():
  20. print(value)
  21.  
  22. #如果要同时迭代 key 和 value,可以这样做
  23. for key, value in d.items():
  24. print(key, value)
  25.  
  26. #判断 字符串'abc' 是否可迭代
  27. print(isinstance("abc",Iterable))
  28.  
  29. #判断list 是否可以迭代
  30. print(isinstance(['a','b','c'],Iterable))
  31.  
  32. #判断 整数是否可迭代
  33. print(isinstance(123,Iterable))
  34.  
  35. #通过enumerate 函数可以把一个list变成 索引-元素对,同时迭代之
  36. for i,value in enumerate(['a','b','c']) :
  37. print(i, value)
  38.  
  39. #for循环里同时引用两个变量
  40. for x, y in [(1,2),(3,4),(5,6)]:
  41. print(x, y)
  42.  
  43. #可以直接作用于for循环的数据类型有以下几种:
  44. #一类是集合数据类型,lsit,tuple,dict,set,str
  45. #一类是generator,包括生成器和带yield的generator function
  46. # 这些可以直接作用于for循环的对象统称为可迭代对象:Iterable
  47. # 可以使用 isinstance()判断一个对象是否是 Iterable
  48.  
  49. print(isinstance([],Iterable))#True
  50. print(isinstance({},Iterable))#True
  51. print(isinstance("abc",Iterable))#True
  52. print(isinstance((x for x in range(10)), Iterable))#True
  53. print(isinstance(100, Iterable))#False
  54.  
  55. #生成器不但可以作用于 for循环,还可以被 next() 函数不断调用,并返回下一个值,直到最后抛出StropIteration
  56. #错误,表示无法继续返回下一个值
  57.  
  58. #可以被next()函数调用并不断返回下一个值的对象称为迭代器:Iterator
  59.  
  60. #同样可以使用 isinstance() 判断一个对象是否是Iterator对象:
  61. print(isinstance((x for x in range(10)), Iterator))#True
  62. print(isinstance([], Iterator))#False
  63. print(isinstance({}, Iterator))#False
  64. print(isinstance("abc",Iterator))#False
  65.  
  66. #可以使用 iter() 函数把 lsit,dict,str等 Iterable变为 Iterator
  67. print(isinstance(iter([]), Iterator))#True
  68. print(isinstance(iter("abc"), Iterator))#True
  69.  
  70. #Iterator 对象支持 next()函数,并不断返回下一个数据,直到抛出StopIreration错误,这是一个有序的数据流序列,我们不知道序列的长度。但是由于序列是一个一个生成,可以生成无限多个元素,可见,他可以表示所有自然数。而list 是做不到这一点的

python3学习笔记(6)_iteration的更多相关文章

  1. Python3学习笔记(urllib模块的使用)转http://www.cnblogs.com/Lands-ljk/p/5447127.html

    Python3学习笔记(urllib模块的使用)   1.基本方法 urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None,  ...

  2. Python3学习笔记 - 准备环境

    前言 最近乘着项目不忙想赶一波时髦学习一下Python3.由于正好学习了Docker,并深深迷上了Docker,所以必须趁热打铁的用它来创建我们的Python3的开发测试环境.Python3的中文教程 ...

  3. python3学习笔记(7)_listComprehensions-列表生成式

    #python3 学习笔记17/07/11 # !/usr/bin/env python3 # -*- conding:utf-8 -*- #通过列表生成式可以生成格式各样的list,这种list 一 ...

  4. python3学习笔记(5)_slice

    #python3 学习笔记17/07/10 # !/usr/bin/env python3 # -*- coding:utf-8 -*- #切片slice 大大简化 对于指定索引的操作 fruits ...

  5. Python3学习笔记01-环境安装和运行环境

    最近在学习Python3,想写一些自己的学习笔记.方便自己以后看,主要学习的资料来自菜鸟教程的Python3教程和廖雪峰官方网站的Python教程. 1.下载 1)打开https://www.pyth ...

  6. python3学习笔记(9)_closure

    #python 学习笔记 2017/07/13 # !/usr/bin/env python3 # -*- conding:utf-8 -*- #从高阶函数的定义,我们可以知道,把函数作为参数的函数, ...

  7. python3学习笔记(8)_sorted

    # python学习笔记 2017/07/13 # !/usr/bin/env python3 # -*- coding:utf-8 -*- #python 内置sorted()函数 可以对list进 ...

  8. python3学习笔记(4)_function-参数

    #python学习笔记 17/07/10 # !/usr/bin/evn python3 # -*- coding:utf-8 -*- import math #函数 函数的 定义 #定义一个求绝对值 ...

  9. python3学习笔记(1)_string

    #python学习笔记 17/07/07 # !/usr/bin/evn python3 # -*- coding:utf-8 -*- #r"" 引号当中的字符串不转义 #练习 # ...

随机推荐

  1. InsertSql

    declare @hobby table(hobbyID int,hName nvarchar(100));insert into @hobby(hobbyID,hName)Select 1,'爬山' ...

  2. [转]Struts2多个文件上传

    转载至:http://blog.csdn.net/hanxiaoshuang123/article/details/7342091 Struts2多个文件上传多个文件上传分为List集合和数组,下面我 ...

  3. php大数除法保留精度问题

    有人在群里问大数除法,要求保留精度的问题,发现普通的方法都不能保存精度,最后找了一下资料发现可以这样 这倒是个冷门知识,嗯哼

  4. MyEclipse weblogic Deploy Location项目名称不正确解决方案

    MyEclipse weblogic Deploy Location项目名称不正确 MyEclipse部署weblogic 项目,名称错误,是别的项目名称 ====================== ...

  5. 个人成长|荣获CNVD年度最有价值漏洞奖

    本文共750+字,预计阅读2-3分钟. 前几天,很荣幸受主办方邀请,还拿了CNVD的一个“年度最有价值漏洞奖”,说一说,这几天的故事吧. 11月20号,意外收到一个会议邀请,当时还比较诧异,印象中我在 ...

  6. hudson.AbortException: No files found in path D:\testproject\project2\testoutput\ with configured filemask: output.xml

    错误描述: hudson.AbortException: No files found in path D:\testproject\project2\testoutput\ with configu ...

  7. Jar命令

    JAR包是Java中所特有一种压缩文档,其实大家就可以把它理解为.zip包;当然也是有区别的,JAR包中有一个META-INF\MANIFEST.MF文件,当你打成JAR包时,它会自动生成. 一.ja ...

  8. STL——仿函数(函数对象)

    一.仿函数(也叫函数对象)概观 仿函数的作用主要在哪里?从第6章可以看出,STL所提供的各种算法,往往有两个版本,其中一个版本表现出最常用(或最直观)的某种运算,第二个版本则表现出最泛化的演算流程,允 ...

  9. 在input中既隐藏边框,也隐藏轮廓的设置

    在设置input的时候,我们往往不想显示边框,所以通常会在css里面写"border"none",但是结果往往差强人意,如下图 我们这个时候可以加一个属性来把它的轮廓也隐 ...

  10. iOS中UIView翻转效果实现

    本文转载至  http://baishiyun.blog.163.com/blog/static/13057117920148228261747/ 新建一个view-based模板工程,在ViewCo ...