推导表达式

li1 = list()
for i in range(10): # 迭代循环内容
li1.append(i)
print( li1 ) ----》》》 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] li2 =[i for i in range(10)] # 推导表达式的语法
# 列表元素, for 循环
print(li2) ----》》》 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
li3= ['bin' for i in range(6)]
# 列表元素, for 循环 print(li3)
----》》》   ['bin', 'bin', 'bin', 'bin', 'bin', 'bin']

   推导表达式 加判断

for i in range():
if i % == :
li4.append(i)
print(li4) ----》》》》 [, , , , ] li5 = [i for i in range() if i % == ]  三元表达式
# 添加的值,for 循环, 判断/条件
print(li5) ----》》》》 [, , , , ]

迭代器:

1,迭代器协议:对象必须提供一个 next 方法,执行该方法后要么返回迭代的下一项,要么就引起 Stoplteration 异常,
以终止迭代,(只能往后走,不能往前找,) 2,可迭代对象:实现了地带协议的对象,(如何迭代对象内部定义一个 __iter__() 方法) 3,协议是一种约定,可迭代对象实现了迭代协议,python 的内部工具(如 for 循环,sum,min,max海曙)
使用迭代器访问对象,

for 循环原理:

l = [1,3,4]

for i in l:
print(i)
原理:
将 iter(l) 的值 进行 next 方法

生成器有两种表现形式:

  生成器表达 式,

      yy =( i for i in range(10) ) 与推导表达 式不同之处在于【】和()

  函数形式

     def test():

      yield  1

      yield  2

    yield  取代了 return

     函数中 只要有  yield,其运行就得到生成器,

     生成器自动实现了迭代器协议,(iter)

def cy(*args):
count = 0
while 1:
if count < len(args):
yield args[count]
count += 1
else:return StopAsyncIteration

  

 生成器
# 列表生成式
a = [ x for x in range(10)]
print(a)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# 列表生成式
def f (n):
return n**3
a = [ f(x) for x in range(10)]
生成器:
a = (x for x in range(10))
print(a)
print( next(a) )
print( next(a) )
print( next(a) )
生成器: a = (x for x in range(10))
for i in a:
print( i ) 生成器:
def y ():
yield 1 def y ():
print('1')
yield 1
print('2')
yield 2 # a = (x for x in range(10))
# for i in a:
# print( i )
for i in y():
print(i) 斐波那契数列:
def f (x):
n, a, b = 0, 0, 1
while n < x :
print( b )
a, b = b ,a + b
n += 1 y = int (input(''))
f ( y ) : yield 的enxt 方法
def f (x):
n, a, b = 0, 0, 1
while n < x :
yield a
a, b = b ,a + b
n += 1 g = f (5)
print( g )
print( next(g) )
print( next(g) )
print( next(g) )
print( next(g) ) :send
def fo ():
print('123')
m = yield 1
print( m )
yield 2 n = fo()
n.send ( None ) ## 等于 next(b)
n.send ( 'abc' ) 迭代器,: 生成器都是迭代器
l = [1,3,4,5]
b = iter(l) : itter: 返回个可迭代对象
l = [1,3,4,5]
b = iter(l)
print(b)
print( next(b) )
for i in b:
print(i)

  

模块

1. time
import time
# time.sleep(2) # ****
# print(time.time()) # ****
# print( time.gmtime()) ## 世界标准时间
# print( time.localtime()) ## 电脑里的时间 ******
# print(time.clock()) st = time.localtime() ## 显示时间格式化 *********
print( time.strftime('%Y--%m--%d %H:%M:%S',st )) ## print(time.strptime('2018--04--25 17:33:14', '%Y--%m--%d %H:%M:%S'))
a = time.strptime('2018--04--25 17:33:14', '%Y--%m--%d %H:%M:%S') ## 单独取出时间如 年
print( a[0])
print( a.tm_year) print( time.ctime()) import datetime
print( datetime.datetime.now() ) 2,random 随机函数
import random
print( random.random() )
print( random.randint(1,10) )
print( random.choice( 'hello') )
print( random.randrange( 1,10) )

3,os 系统操作
import os
print(os.getcwd()) ## 获取工作目录
os.chdir(r'c:\users') ## 改变工作目录
print(os.curdir) ## 当前目录
print(os.pardir) ##
os.makedirs('a\\b\\c') ## 递归创建文件夹
os.mkdir('a') ## 创建文件夹
os.removedirs('a\\b\\c') ## 删除文件夹
os.removedirs('a\\b\\c') ## 递归删除文件夹
a = os.listdir( r'E:\pycharm\201804' ) ## 展示出目录里的全部
print( a )
os.remove( '1.png' ) ##删除文件
os.rename('set.py','装饰器.py') ## 重命名文件‘酒文件名’,‘新文件名’
q = os.stat('666.py') ## 获取文件信息
print(q)
print( os.sep ) ## \
os.linesep ## 换行
os.environ ## 获取环境变量
os.path.dirname('201804/3.py') ## 获取文件所在的目录
os.path.join(a,b) ### 路径拼接
os.path.getatime() ## 最后一次存取时间
os.path.getmtime() ## 最后一次修改时间 4, sys
import sys 5, hashlib 加密
import hashlib
m = hashlib.md5 ## 加密算法
m.update( 'hello'.encode('utf8')) ##对 hello 加密
print( m.hexdigest() ) ## 加密后.
s = hashlib.sha256() ## 加密算法

  

  模块调用

#  模块的调用:
import 模块名
import 模块名 ,模块名
from 模块名 import 方法(函数名)
from 模块名 import *
from 模块名 import 方法(函数名)as 新方法 ## 包的调用
import 包名 import 模块名
import 包名.包名 import 模块名
import 包名.包名.模块名 import 方法
from 包名 import 模块名
__file__ 相对路径的内置变量
import os
os.path.dirname( os.path.abspath(__file__) )
上一级(得到绝对路径) if __name__ == '__main__':

  

潭州课堂25班:Ph201805201 第十五课 迭代器,生成器 (课堂笔记)的更多相关文章

  1. NeHe OpenGL教程 第二十五课:变形

    转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...

  2. NeHe OpenGL教程 第四十五课:顶点缓存

    转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...

  3. NeHe OpenGL教程 第三十五课:播放AVI

    转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...

  4. NeHe OpenGL教程 第十五课:纹理图形字

    转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...

  5. Java 设计模式系列(十五)迭代器模式(Iterator)

    Java 设计模式系列(十五)迭代器模式(Iterator) 迭代器模式又叫游标(Cursor)模式,是对象的行为模式.迭代子模式可以顺序地访问一个聚集中的元素而不必暴露聚集的内部表象(interna ...

  6. 潭州课堂25班:Ph201805201 第十课 类的定义,属性和方法 (课堂笔记)

    类的定义 共同属性,特征,方法者,可分为一类,并以名命之 class Abc: # class 定义类, 后面接类名 ( 规则 首字母大写 ) cls_name = '这个类的名字是Abc' # 在类 ...

  7. 潭州课堂25班:Ph201805201 WEB 之 页面编写 第四课 登录注册 (课堂笔记)

    index.html 首页 <!DOCTYPE html> <html lang="en"> <head> <meta charset=& ...

  8. 潭州课堂25班:Ph201805201 WEB 之 页面编写 第三课 (课堂笔记)

    index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset=&quo ...

  9. 潭州课堂25班:Ph201805201 WEB 之 页面编写 第二课 (课堂笔记)

    index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset=&quo ...

随机推荐

  1. springboot系列十二、springboot集成RestTemplate及常见用法

    一.背景介绍 在微服务都是以HTTP接口的形式暴露自身服务的,因此在调用远程服务时就必须使用HTTP客户端.我们可以使用JDK原生的URLConnection.Apache的Http Client.N ...

  2. ES系列五、ES6.3常用api之搜索类api

    1.搜索api 1.1.routing:路由 执行搜索时,它将广播到所有索引/索引分片(副本之间的循环).可以通过提供routing参数来控制将搜索哪些分片.例如,在索引book时,路由值可以是nam ...

  3. 关于报错stale element reference: element is not attached to the page document处理

    1.现象 在执行脚本时,有时候引用一些元素对象会抛出如下异常 org.openqa.selenium.StaleElementReferenceException: stale element ref ...

  4. Linux C 结构体初始化三种形式

    最近看linux代码时发现了结构体 struct 一种新的初始化方式,各方查找对比后总结如下: 1. 顺序初始化教科书上讲C语言结构体初始化是按照顺序方式来讲的,没有涉及到乱序的方式.顺序初始化str ...

  5. NOI 2012 随机数生成器

    看到全是矩阵的题解,我来一发递推+分治 其实这题一半和poj1845很像(或是1875?一个叫Sumdiv的题) 言归正传,我们看看怎么由f(0)推出f(n) 我们发现,题目中给出了f(n)=af(n ...

  6. python 全栈开发,Day117(popup,Model类的继承,crm业务开发)

    昨日内容回顾 第一部分:权限相关 1. 权限基本流程 用户登录成功后获取权限信息,将[权限和菜单]信息写入到session. 以后用户在来访问,在中间件中进行权限校验. 为了提升用户体验友好度,在后台 ...

  7. 【C++ Primer | 15】C++虚函数表剖析②

    多重继承 下面,再让我们来看看多重继承中的情况,假设有下面这样一个类的继承关系. 注意:子类只overwrite了父类的f()函数,而还有一个是自己的函数(我们这样做的目的是为了用g1()作为一个标记 ...

  8. 通过生成支付二维码来实现微信支付的解决方案 - EasyWechat版(转)

    上一篇我们讲了在微信浏览器内实现微信支付的功能,它特别适合于一些基于微信公众号的h5站点等,支付流程也相当流畅,但是... 还有一种情况,比如现在北哥兄弟连PC版,是生成了一个二维码,这个二维码是专属 ...

  9. 你需要知道的 .NET

    1. 简述private.protected.public.internal 修饰符的访问权限. 答. private : 私有成员, 在类的内部才可以访问. protected : 保护成员,该类内 ...

  10. 文档工具GitBook使用

    一.登陆注册 地址:https://www.gitbook.com/ 1.gitbook可使用github账号登录,如果已经注册github可以直接使用github账号登录 2.如果是github账号 ...