Python 生成器

  生成器和生成表达式 

  a=[i*2 for i in range(10)]#生成表达式
  b=(i*2 for i in range(10))#生成器

  生成器的特点:优点(不占用内存空间,生成速度快),缺点(不能切片,只能保存当前值,前值不能获取)

Python 创建生成器

#1.生成器
b=(i*2 for i in range(10))
#2.函数生成器
def func(x):
count=0
while count<x:
yield count #保存当前函数的中断状态(断点)
count += 1
f=func(10)

Python 生成器的方法

print(f.__next__())#调用下一个元素
print(f.send(1))#发送一个元素

Python 生成器的循环

for i in (i*2 for i in range(10)):
print(i)

Python yield

def func1(name):
print('%s准备吃东西了'%(name))
while True:
food=yield #yield卡住跳出函数,send发送数据后继续执行函数
print('%s被%s吃掉了'%(food,name))
def func2(food):
f = func1('小明') #创建顾客
f2= func1('小李')
f.__next__() #启动客户,到yield跳出程序
f2.__next__()
for i in range(10):
f.send(food) #唤醒yield程序并传递food,继续执行print
f2.send(food)
func2('鱼')

Python 迭代器

  可迭代对象和迭代器

  可迭代对象:可以用for循环的对象都是可迭代对象,如列表元组字典字符串
  迭代器:内部有__next__()方法的对象都是迭代器,如生成器,但迭代器不是生成器

Python 迭代器的转换

#可迭代对象变成迭代器
iter([1,2,3])

Python 迭代器和迭代对象的判断

from collections import Iterable
from collections import Iterator
print(isinstance([1,2,3,4],Iterable))#判断是不是可迭代对象
print(isinstance(iter([1,2,3,4]),Iterator))#判断是不是迭代器

Python 迭代器的方法

print(iter([1,2,3]).__next__()) #调用下一个

Python 迭代器循环

for i in iter([1,2,3,4]):
print(i)
#while循环不建议使用,迭代器是无穷尽的无法计算最后一个值,只有用try去判断

Python 内置函数(判断)

print(bool(1))#布尔值判断
print(all([0,1,1]))#全部为真才为真
print(any([0,1,1]))#有一个为真才为真
print(callable([]))#是不是一个方法,是不是可以调用

Python 内置函数(转换)

for i in enumerate(['a','b','c']):#获取下标和内容
print(i)
print(bin(11))#十进制转二进制
print(oct(11))#十进制转八进制
print(hex(15))#十进制转十六进制
bytes('a',encoding='utf-8')#转化成二进制格式
tuple() # 列表变成元组
frozenset([1,2,3,4])#不可变集合,和元组一样
chr(99)#返回ascii对应的字符
float()#转化浮点
repr(range(10))#把对象转化成字符串
print(type(ascii([1,2,3])))#变成一个字符串的形式,没什么用
a=bytearray('abcd',encoding='utf-8')
a[0]=99#字符串和二进制格式不可以修改,但这个可以修改
print(a)

Python 内置函数(计算)

print(pow(2,5))#次方
print(abs(-1))#计算绝对值
print(divmod(5,2))#返回商和余数
print(sum([1,2,3,4]))#对一个列表求和
round(1.2222,2)#保留小数点后几位
print(max([1,2,3]))#返回最大值
print(min([1,2,3]))#返回最小值
for i in filter(lambda n:n<5,range(10)):#过滤
print(i)
for i in map(lambda n:n<5,range(10)):#返回前面的结果
print(i)

Python 内置函数(查看)

help()#帮助
print()#打印
print('{name}'.format(name=''))#格式化输出
type('a')#查看数据类型
print(dir({}))#查看内置方法
vars()#返回一个对象所有的属性名
globals()#打印全局变量的key和value
def func1():
a=1
print(locals())#打印全部的局部变量
func1()

Python 内置函数(列表和迭代器)

reversed([1,2,3])#翻转
print(sorted([2,1,3,4]))#排序
print(sorted({2:22,1:33,}.items()))#key排序
print(sorted({2:22,1:33,}.items(),key=lambda x:x[1]))#value排序
zip([1,2,3,4],['a','b','c','d'])#拉链
range(10)#从0取到10不包括10的一个迭代器
next()#迭代器使用的next方法
list=[1,2,3,4,5,6,7,8,9,10]
print(list[slice(2,5)])#对一个类表切片 没啥用

Python 内置函数(其他)

#eval()#执行简单的代码块
#exec()#执行多段代码块
__import__('auth')#字符串导入一个模块
#exit()#退出
#hash()#加密
code='''for i in range(10)'''
#compile()#编译 没啥用
complex()#复数用不到
import functools
print(functools.reduce(lambda a,b:a+b,range(10)))#求和
#super
#memoryview
#property
#credits()
#copyright()
#delattr()

Python json写文件(跨平台)

import json
data={'user':'admin','password':''}
f_json=open('json.text','w')
#写入json文件
json.dump(data,f_json)
#f_json.write(json.dumps(data))
f_json.close()

Python json读取文件

import json
f_json=open('json.text','r')
#json读文件
load_json=json.load(f_json)
#load_json=json.loads(f_json.read())
f_json.close()

Python pickle写文件(限定python)

import pickle
data={'user':'admin','password':''}
f_pickle=open('pickle.text','wb')
#写入文件
pickle.dump(data,f_pickle)
#f_pickle.write(pickle.dumps(data))
f_pickle.close()

Python pickle读取文件

import pickle
f_pickle=open('pickle.text','rb')
#读取文件
data_load_pickle=pickle.load(f_pickle)
#data_load_pickle=pickle.loads
f_pickle.close()

python学习途径

友情推荐:  猿人学Python【https://www.yuanrenxue.com/】 由一群工作十余年的老程序员结合实际工作经验所写的Python教程。

新手Python第四天(生成器)的更多相关文章

  1. Python 第四篇:生成器、迭代器、装饰器、递归函数与正则表达式

    一:生成器:Generator,可以理解为是一种一个函数产生一个迭代器,而迭代器里面的数据是可以通过for循环获取的,那么这个函数就是一个生成器,即生成器是有函数生成的,创建生成器使用()表示,比如g ...

  2. Python(四)生成器 和 杨辉三角

    学习链接: http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/00143177992 ...

  3. 初学 Python(十四)——生成器

    初学 Python(十四)--生成器 初学 Python,主要整理一些学习到的知识点,这次是生成器. # -*- coding:utf-8 -*- ''''' 生成式的作用: 减少内存占有,不用一次性 ...

  4. Python进阶(四)----生成器、列表推导式、生成器推导式、匿名函数和内置函数

    Python进阶(四)----生成器.列表推导式.生成器推导式.匿名函数和内置函数 一丶生成器 本质: ​ 就是迭代器 生成器产生的方式: ​ 1.生成器函数

  5. python基础-迭代器和生成器

    一.递归和迭代 1.递归:(问路示例) 递归算法是一种直接或者间接地调用自身算法的过程.在计算机编写程序中,递归算法对解决一大类问题是十分有效的,它往往使算法的描述简洁而且易于理解. 2.迭代:简单理 ...

  6. 简学Python第四章__装饰器、迭代器、列表生成式

    Python第四章__装饰器.迭代器 欢迎加入Linux_Python学习群  群号:478616847 目录: 列表生成式 生成器 迭代器 单层装饰器(无参) 多层装饰器(有参) 冒泡算法 代码开发 ...

  7. Python入门之迭代器/生成器/yield的表达方式/面向过程编程

    本章内容 迭代器 面向过程编程 一.什么是迭代 二.什么是迭代器 三.迭代器演示和举例 四.生成器yield基础 五.生成器yield的表达式形式 六.面向过程编程 ================= ...

  8. Python第四天 流程控制 if else条件判断 for循环 while循环

    Python第四天   流程控制   if else条件判断   for循环 while循环 目录 Pycharm使用技巧(转载) Python第一天  安装  shell  文件 Python第二天 ...

  9. python 迭代器协议和生成器

    一.什么是迭代器协议 1.迭代器协议是指:对象必须提供一个next方法,执行该方法要么返回迭代中的下一项,要么就引起一个stoplteration异常,以终止迭代(只能往后走,不能往前退) 2.可迭代 ...

随机推荐

  1. YII缓存整理

    缓存 缓存是用于提升网站性能的一种即简单又有效的途径.通过存储相对静态的数据至缓存以备所需,我们可以省去生成这些数据的时间.在 Yii 中使用缓存主要包括配置和访问缓存组件 . 如下的应用配置指定了一 ...

  2. Java并发编程--3.Lock

    Lock接口 它提供3个常用的锁 lock() : 获不到锁就就一直阻塞 trylock() :获不到锁就立刻放回 或者 定时的,轮询的获取锁 lockInterruptibly() : 获不到锁时阻 ...

  3. vue打包以后,除了首页意外,其余页面是空白

    针对vue项目打包以后,除了首页意外,其余页面是空白的,需要在服务端进行配置. 原因是router中,mode是history引起的 如果是nginx,改成如下: location / { root ...

  4. 蓝桥杯-k倍区间

    http://lx.lanqiao.cn/problem.page?gpid=T444 问题描述 给定一个长度为N的数列,A1, A2, ... AN,如果其中一段连续的子序列Ai, Ai+1, .. ...

  5. boost::bind 学习

    最近学习了太多与MacOS与Iphone相关的东西,因为不会有太多人有兴趣,学习的平台又是MacOS,不太喜欢MacOS下的输入法,所以写下来的东西少了很多.    等我学习的东西慢慢的与平台无关的时 ...

  6. Nginx Location模块

    相关知识点:URI:统一资源标识符,是一个用于标识某一互联网资源名称的字符串,该种标识允许用户对任何的资源通过特定的协议进行交互操作.URL:统一资源定位符,由三部分组成(1)http://协议 (2 ...

  7. 一、Delphi中Cxgrid表格滚动条粗细设置

    1.Delphi VCL新版本的Cxgrid滚动条默认是触屏模式(如下图),很细的滚动条,在电脑版显示非常不方便. 2.如果需要改成传统的滚动条模式,需要设置一下LookAndFeel里面的Scrol ...

  8. 三星S5-PV210内存初始化

    一.S5PV210时钟系统 时钟:一定频率的电信号.   时钟系统:基于CMOS工艺的高性能处理器时钟系统,集成PLL可以从内部触发,比从外部触发更快且更准确,能有效地避免一些与信号完整性相关的问题. ...

  9. Scala的高级特性

    高阶函数 概念 Scala混合了面向对象和函数式的特性,我们通常将可以作为参数传递到方法中的表达式叫做函数.在函数式编程语言中,函数是“头等公民”,高阶函数包含:作为值的函数.匿名函数.闭包.柯里化等 ...

  10. 05- views视图层

    1.配置index 主url from django.contrib import admin from django.urls import path, re_path, include urlpa ...