python生成迭代的用法
说明
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生成迭代的用法相关推荐
- python可迭代对象 迭代器生成器_Python可迭代对象、迭代器和生成器
8.1 可迭代对象(Iterable) 大部分对象都是可迭代,只要实现了__iter__方法的对象就是可迭代的. __iter__方法会返回迭代器(iterator)本身,例如: >>&g ...
- Python中yield简单用法
Python中yield简单用法 你或许知道带有yield的函数在Python中被称之为generator,那何为 generator? 我们暂时抛开generator,先从一个常见编程题目开始,循序 ...
- python中yield的用法(生成器的讲解)
2 理解说明yield与生成器 在Python中,使用yield的函数被称为生成器函数(generator function). 生成器有两种方法:next()和send(),都可以调用生成器 yie ...
- Python BS4解析库用法详解
Python BS4解析库用法详解 Beautiful Soup 简称 BS4(其中 4 表示版本号)是一个 Python 第三方库,它可以从 HTML 或 XML 文档中快速地提取指定的数据.Bea ...
- Python 可迭代的对象、迭代器和生成器
Python中可迭代对象和迭代器对象的理解 我们在用for ... in ...语句循环时,in后面跟随的对象要求是可迭代对象,即可以直接作用于for循环的对象统称为可迭代对象(Iterable),如 ...
- python Pool常用函数用法总结
在本篇内容里小编给大家整理的是一篇关于python Pool常用函数用法总结内容,有需要的朋友们可以学习下. 1.说明 apply_async(func[,args[,kwds]):使用非堵塞调用fu ...
- python HDF5 h5py 的用法
python HDF5 h5py 的用法 核心概念 HDF5文件是包含两种对象的容器:数据集,它们是类似数组的数据集合:组,是类似文件夹的容器,用于存放数据集和其他组.使用h5py时要记住的最基本的事 ...
- 五分钟理解yield在python中的简单用法,让你不再迷惑
很多同学无论是在学习python还是使用python的过程中,都会遇到yield关键字,这个让人头大的问题,今天,就给大家分享一下我自学yield的心路历程 基本概念: (1)在 Python 中,使 ...
- python 词云_利用Python生成词云
利用Python生成词云 一.第三方库的安装与介绍 1.1 Python第三方库jieba(中文分词) 1.介绍 "结巴"中文分词:做最好的 Python 中文分词组件. 2.特 ...
最新文章
- 大话Django之一:安装与启动
- 【EventBus】EventBus 源码解析 ( 事件发送 | 线程池中执行订阅方法 )
- abap range 或 Filter的说明
- SlidingMenu的简单使用
- Delete Edges
- 面试时会谈薪的人一开口就赢了:让你薪资翻倍的谈薪技巧
- ----------------------------------------spring 整合jdbc---------------------
- HDU 1024 Max Sum Plus Plus
- python里怎么读取文件-python之文件读写
- Vue项目部署到服务器上路由无法访问的问题
- JAX-RS 2.0 REST客户端编程实例
- 使用Eclipse编译运行MapReduce程序 Hadoop2.6.0_Ubuntu/CentOS
- 第二次项目《吃货联盟Plus》
- EXCEL的水文数据四舍六入修约
- scratch传说之下素材_《故事新编》:在古老传说和寓言故事上丰富情节和赋予意义...
- 10·24|程序员节!
- 济南申报高新技术企业不符合的条件
- 电脑和打印机怎么连接
- 二维码解码芯片最新三款的二维码芯片MCU不同之处
- 提示the windows installer service could not be accessed