1 切片操作

>>> L
['aaa', 'bbb', 'ccc', 'ddd']
>>> L[0:3]
['aaa', 'bbb', 'ccc']
>>> L[::5]
[0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95]
0-100的所有数字,每5个取一个

2 迭代操作 只要有可迭代对象就可以迭代

 >>> d = {'a':1, 'b':2, 'c':3}
>>> for key in d:
... print key
...
a
c
b

对字典进行迭代 默认迭代键 如果要迭代值,可以选用下面代码

 >>> d
{'a': 1, 'c': 3, 'b': 2}
>>> for values in d.itervalues():
... print values
...
1
3
2
d.itervalues()返回一个字典值的可迭代对象
同时迭代键和值:
 >>> for k, v in d.iteritems():
... print k, v
...
a 1
c 3
b 2

2.1 判断可迭代对象

 >>> from collections import Iterable
>>> isinstance(d.iteritems(), Iterable)
True
2.3 enumerate函数可以把一个list变成索引-元素对,这样就可以在for循环中同时迭代索引和元素本身
 >>> for i, v in enumerate(['a', 'b', 'c']):
... print i, v
...
0 a
1 b
2 c

2.4 列表生成式

 >>> [x*x for x in range(1, 11)]
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
需要生成的x*x元素放在前面
3 生成器
生成列表的过程中是根据计算公式,边计算边生成,而不是一次生成
3.1 只要把一个列表生成式的[]改成(),就创建了一个generator
 >>> L = [x*x for x in range(10)]
>>> L
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
列表生成式和生成器对比
>>> g = (x*x for x in range(10))
>>> g
<generator object <genexpr> at 0x7f87935774b0>

通过生成器的next()方法可以很方便的生成后续元素,全部打印需要使用for循环变量

 >>> g.next()
0
>>> g.next()
1
>>> g.next()
4
>>> g.next()
9
>>> for n in g:
... print n
...
16
25
36
49
64
81
3.2 通过yield也可以使用生成器函数
如下通过yield生成一个生成器函数
 >>> def fib(max):
... n, a, b = 0, 0, 1
... while(n < max):
... yield b
... a, b = a, a + b
... n = n + 1
...
>>> fib(6)
<generator object fib at 0x7f8793577aa0>
生成器函数和普通函数执行不同,生成器函数每往生成一次,就会从上一次yield处执行
代码实例如下:
 >>> def odd():
... print 'step 1'
... yield 1
... print 'step 2'
... yield 2
... print 'step 3'
... yield 3
...
>>> o = odd()
>>> o.next()
step 1
1
>>> o.next()
step 2
2
>>> o.next()
step 3
3
 

python-切片 迭代 生成器的更多相关文章

  1. python 切片&迭代

    Python提供了切片(Slice)操作符L = ['Michael', 'Sarah', 'Tracy', 'Bob', 'Jack']取前3个元素>>> L[0:3]['Mich ...

  2. Python可迭代对象、迭代器和生成器

    Python可迭代对象.迭代器和生成器 python 函数 表达式 序列 count utf-8 云栖征文 python可迭代对象 python迭代器 python生成器 摘要: 8.1 可迭代对象( ...

  3. python 调用函数 / 类型转换 / 切片/ 迭代

    调用函数 / 类型转换 /  切片/ 迭代 1. 调用函数:abs(),max(),min() 2. 数据类型转换:int(),float(),str(),tool(),a=abs, 3. 定义函数, ...

  4. 一文搞懂Python可迭代、迭代器和生成器的概念

    关于我 一个有思想的程序猿,终身学习实践者,目前在一个创业团队任team lead,技术栈涉及Android.Python.Java和Go,这个也是我们团队的主要技术栈. Github:https:/ ...

  5. Python三大器之生成器

    Python三大器之生成器 生成器初识 什么是生成器 生成器本身属于迭代器.继承了迭代器的特性,惰性求值,占用内存空间极小. 为什么要有生成器 我们想使用迭代器本身惰性求值的特点创建出一个可以容纳百万 ...

  6. python高级之生成器&迭代器

    python高级之生成器&迭代器 本机内容 概念梳理 容器 可迭代对象 迭代器 for循环内部实现 生成器 1.概念梳理 容器(container):多个元素组织在一起的数据结构 可迭代对象( ...

  7. 【python】迭代器&生成器

    源Link:http://www.cnblogs.com/huxi/archive/2011/07/01/2095931.html 迭代器 迭代器是访问集合元素的一种方式.迭代器对象从集合的第一个元素 ...

  8. python 基础——generate生成器

    通过列表表达式可以直接生成列表,不过列表一旦生成就需要为所有元素分配内存,有时候会很消耗资源. 所以,如果列表元素可以按照某种算法推算出来,这样就不必创建完整的list,从而节省大量的内存空间. 在P ...

  9. 第三篇:python高级之生成器&迭代器

    python高级之生成器&迭代器   python高级之生成器&迭代器 本机内容 概念梳理 容器 可迭代对象 迭代器 for循环内部实现 生成器 1.概念梳理 容器(container ...

  10. Python迭代器,生成器--精华中的精华

    1. 迭代器 迭代器是访问集合元素的一种方式.迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束.迭代器只能往前不会后退,不过这也没什么,因为人们很少在迭代途中往后退.另外,迭代器的一大 ...

随机推荐

  1. EntityFramework 7 Left Join Where is error(Test record)

    First of all, my English is very poor, so I may not be a very good expression, very sorry! In this b ...

  2. CSS中position的4种定位详解

    大家都知道,css中的position有4种取值,分别是static.fixed.relative.absolute. 详细解释: static:相当于没有定位,元素会出现在正常的文档流中. fixe ...

  3. 【JVM】JVM系列之内存模型(六)

    一.前言 经过前面的学习,我们终于进入了虚拟机最后一部分的学习,内存模型.理解内存模型对我们理解虚拟机.正确使用多线程编程提供很大帮助.下面开始正式学习. 二.Java并发基础 在并发编程中存在两个关 ...

  4. String的按值传递,java传参都是传值

    java中对象作为参数传递给一个方法,到底是值传递,还是引用传递? String和int参数传递是按值传递还是引用传递? 一道面试题目,String的传递: public String change( ...

  5. 记录visual Studio使用过程中的两个问题

    Visual Studio是Windows平台下进行项目管理和开发的终极利器.除了微软自家的技术外,新版的VS不但支持Javascript, Python的开发调试,甚至还支持了Android, iO ...

  6. C# 热敏打印机 Socket 网络链接 打印 图片 (一)

    using System; using System.Collections.Generic; using System.Drawing; using System.Linq; using Syste ...

  7. ios h5 app avalon tap点击事件失效及点击延迟300ms问题解决方法

    1.ios h5 app avalon tap事件失效 使用MUI制作app界面,使用avalon.js渲染数据,发现在(Android上正常)ios上运行时容器div的avalon的ms-on-ta ...

  8. Java程序,基本数据类型、、数据类型转换、变量和常量、常用运算符

    一.基本数据类型 整数类型:byte.short. int(常用).long(较常用)     定义某个变量          int  a=10: 浮点类型(小数):float.double(常用) ...

  9. html中<radio>单选按钮控件标签用法解析及如何设置默认选中

    <input type="radio" name="radio" value="1">单选1 <input type=&q ...

  10. Lind.DDD.UoW工作单元的实现

    回到目录 工作单元UoW我们几乎在任务一个像样的框架里都可以找到它的足迹,是的,对于大型系统来说,他是很重要的,保持数据一致性,维持事务状态这都是它要为系统实现的功能,而在不同的框架里,实现UoW的机 ...