说明
python的进阶用法之一就是生成器、迭代器的用法,使用生成迭代可以极大地减少代码的行数,使得代码简明易读。

列表生成式
range(1,100,5) #第一个参数表示开始位,第二个参数表示结束位(不含),第三个参数表示步长,就是每5个数返回一次。

a = [i for i in range(1,10)] #列表生成式表示返回i的值,并且返回9次,每次返回的是i的值。
a = [2 for i in range(1,10)] #这里表示返回2,并且返回9次,但是每次的值都是2。
a = [i for i in range10 if i%2==0] #只返回偶数。
a = [(i,j) for i in range(5) for j in range(5)] #二维元组的遍历。

生成器

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
a = (i for i in range(1,10)) #与list的区别为[]和()
next(a),a.__next__() #生成器的取值方式只能使用next的方法。
# fobi
def num():a,b = 0,1for i in range(10):yield b  # yield和return返回类似,只不过yield后会继续执行,且函数返回值为生成器。a,b = b,a+b
a = num()
for n in a:  # 使用for进行迭代print(n)

注意:生成器占用内存小,在使用的时候取值,降低CPU和内存空间,提高效率。

迭代器
迭代器是所有生成器和生成列表的基类。

# '',[],(),{},{:} 都是可迭代的对象,迭代器的子类
a = (x for i in range(100)) #[]为生成列表,()为生成器
from collections.abc import Iterable #python33之后需要用collections.abc而非collections
print(isinstance('abc',Iterable)) # True
a = [1,2,3,4,5]
b = iter(a)  # 列表转化为迭代器
print(next(b)) # 1

注意:生成器是可迭代对象,迭代器不一定是生成器。并且迭代器无法回取,只能向前取值。
注意:一个对象具有 iter 方法的才能称为可迭代对象,使用yield生成的迭代器函数,也有iter方法。凡是没有iter方法的对象不是可迭代对象,凡是没有__next__()方法的不是是生成器。(这里的方法都是魔法方法,是内置方法,可以使用dir()查看)

itertools系统库
itertools集成了大部分的迭代函数,可以方便地求前缀和,前缀积等。

accumulate函数

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
import operator
from itertools import accumulate
x = accumulate(range(1, 10), operator.add) # 前缀和, 可以改为operator.mul求前缀积
print(list(x))
x = accumulate(range(1,10), max)
print(list(x))
# [1, 3, 6, 10, 15, 21, 28, 36, 45]
# [1, 2, 3, 4, 5, 6, 7, 8, 9]

排列组合

permutations会生成所有全排列

from itertools import permutationsx = permutations("ACB")
print(list(x))
# [('A', 'C', 'B'), ('A', 'B', 'C'), ('C', 'A', 'B'), ('C', 'B', 'A'), ('B', 'A', 'C'), ('B', 'C', 'A')]

combinations会生成所有组合

from itertools import combinations
x = combinations('ABCD', 2)
print(list(x))
# [('A', 'B'), ('A', 'C'), ('A', 'D'), ('B', 'C'), ('B', 'D'), ('C', 'D')]

python生成迭代的用法相关推荐

  1. python可迭代对象 迭代器生成器_Python可迭代对象、迭代器和生成器

    8.1 可迭代对象(Iterable) 大部分对象都是可迭代,只要实现了__iter__方法的对象就是可迭代的. __iter__方法会返回迭代器(iterator)本身,例如: >>&g ...

  2. Python中yield简单用法

    Python中yield简单用法 你或许知道带有yield的函数在Python中被称之为generator,那何为 generator? 我们暂时抛开generator,先从一个常见编程题目开始,循序 ...

  3. python中yield的用法(生成器的讲解)

    2 理解说明yield与生成器 在Python中,使用yield的函数被称为生成器函数(generator function). 生成器有两种方法:next()和send(),都可以调用生成器 yie ...

  4. Python BS4解析库用法详解

    Python BS4解析库用法详解 Beautiful Soup 简称 BS4(其中 4 表示版本号)是一个 Python 第三方库,它可以从 HTML 或 XML 文档中快速地提取指定的数据.Bea ...

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

    Python中可迭代对象和迭代器对象的理解 我们在用for ... in ...语句循环时,in后面跟随的对象要求是可迭代对象,即可以直接作用于for循环的对象统称为可迭代对象(Iterable),如 ...

  6. python Pool常用函数用法总结

    在本篇内容里小编给大家整理的是一篇关于python Pool常用函数用法总结内容,有需要的朋友们可以学习下. 1.说明 apply_async(func[,args[,kwds]):使用非堵塞调用fu ...

  7. python HDF5 h5py 的用法

    python HDF5 h5py 的用法 核心概念 HDF5文件是包含两种对象的容器:数据集,它们是类似数组的数据集合:组,是类似文件夹的容器,用于存放数据集和其他组.使用h5py时要记住的最基本的事 ...

  8. 五分钟理解yield在python中的简单用法,让你不再迷惑

    很多同学无论是在学习python还是使用python的过程中,都会遇到yield关键字,这个让人头大的问题,今天,就给大家分享一下我自学yield的心路历程 基本概念: (1)在 Python 中,使 ...

  9. python 词云_利用Python生成词云

    利用Python生成词云 一.第三方库的安装与介绍 1.1  Python第三方库jieba(中文分词) 1.介绍 "结巴"中文分词:做最好的 Python 中文分词组件. 2.特 ...

最新文章

  1. 大话Django之一:安装与启动
  2. 【EventBus】EventBus 源码解析 ( 事件发送 | 线程池中执行订阅方法 )
  3. abap range 或 Filter的说明
  4. SlidingMenu的简单使用
  5. Delete Edges
  6. 面试时会谈薪的人一开口就赢了:让你薪资翻倍的谈薪技巧
  7. ----------------------------------------spring 整合jdbc---------------------
  8. HDU 1024 Max Sum Plus Plus
  9. python里怎么读取文件-python之文件读写
  10. Vue项目部署到服务器上路由无法访问的问题
  11. JAX-RS 2.0 REST客户端编程实例
  12. 使用Eclipse编译运行MapReduce程序 Hadoop2.6.0_Ubuntu/CentOS
  13. 第二次项目《吃货联盟Plus》
  14. EXCEL的水文数据四舍六入修约
  15. scratch传说之下素材_《故事新编》:在古老传说和寓言故事上丰富情节和赋予意义...
  16. 10·24|程序员节!
  17. 济南申报高新技术企业不符合的条件
  18. 电脑和打印机怎么连接
  19. 二维码解码芯片最新三款的二维码芯片MCU不同之处
  20. 提示the windows installer service could not be accessed

热门文章

  1. H5开发开发利器——flex
  2. 关于树,各种平衡树查找树的资料合集~~
  3. Linux TCP 连接数修改
  4. SAP中服务性订单的替代解决方案
  5. SAP ABAP F4的检索帮助(包括自定义检索帮助)
  6. 40、Power Query-Text.Combine函数进阶
  7. SAP财务报表不平之分析
  8. SAP财务中国本土好内容
  9. 销售订单行项目的装运点字段确认规则
  10. 欧锦赛球星谱:帕克领豪阵 诺天王对决加索尔