生成器迭代器+压缩文件
readme的规范
1软件定位,软件的基本功能
2运行代码的方法:安装环境,启动命令
3简要的使用说明
4代码目录结构说明,更详细点可以说明软件的基本原理
5常见问题说明
========================================================
列表生成器
[i*2 for i in range(10)] #开头的可为函数也可为方程
已经在内存中生成 存在并可调用
==========================================================
生成器:generator(有yield关键词存在 就是生成器)
1.一边循环一边计算的机制
2.循环到时才能使用
3.只记录当前位置
a=(i*2 for i in range(10))
特点 :
1.在调用时只能用__next__()方法 一次次调用(用来唤醒yield)
2.不可像调用列表一样调用生成器
作用:
1.在运行循环时可进出* 增加语句
##生成器并行##
import time
def maker(name):
c1=eater("a")
c2=eater("b")
c1.__next__()
c2.__next__()
print(name,"doing")
for i in range (10):
time.sleep(1)
print("第{}个".format(i+1))
c1.send(i)
c2.send(i)
def eater(name):
print(name,"eating=====")
while True:
baozi = yield
print("包子{}号来了,给{}吃了".format(baozi+1,name))
maker("cc")
===================================================================
可迭代对象和迭代器
1.可迭代对象:Iterable 可循环的对象(例:list,tuple,dict,set,str,生成器)
2.迭代器:Iterator可以被next()函数调用 不断返回下一个值的对象
3.生成器都是迭代器
4.列表字典字符串不是迭代器! 但可用iter(列表/字典/字符串)获得迭代器对象
==================================================================
内置方法(节选)
exec()执行字符串
a="print(\"hello\")"
exec(a)
eval(str)将字符串去掉“”(”蜕皮“)
eval("2+1")
结果:3
lambda作为匿名函数关键词
filter()从一组数据中过滤想要的
res1=filter(lambda n:n>5,range(10))
结果:6,7,8,9
map()对传入的数值进行处理后返回
res2=map(lambda n:2*n,range(10))
结果:0,2,4,6,8,10,12,14,16,18
zip() 将两个数组对应成元组 按少的来
a=[1,2,3,4,5]
b=["a","b","c"]
for i in zip(a,b):
print(i)
结果:(1, 'a') (2,'b') (3,'c')
返回当前目录的相对路径
print(__file__)
os.path.abspath(文件)#返回当前目录的绝对路径
import os
print(os.path.abspath(__file__))
os.path.dirname(“路径”)返回去文件名的绝对路径(返回当前文件上级)
a=os.path.dirname(os.path.abspath(__file__))
import sys
print(sys.path)
---恢复内容结束---
readme的规范
1软件定位,软件的基本功能
2运行代码的方法:安装环境,启动命令
3简要的使用说明
4代码目录结构说明,更详细点可以说明软件的基本原理
5常见问题说明
========================================================
列表生成器
[i*2 for i in range(10)] #开头的可为函数也可为方程
已经在内存中生成 存在并可调用
==========================================================
生成器:generator(有yield关键词存在 就是生成器)
1.一边循环一边计算的机制
2.循环到时才能使用
3.只记录当前位置
a=(i*2 for i in range(10))
特点 :
1.在调用时只能用__next__()方法 一次次调用(用来唤醒yield)
2.不可像调用列表一样调用生成器
作用:
1.在运行循环时可进出* 增加语句
##生成器并行##
import time
def maker(name):
c1=eater("a")
c2=eater("b")
c1.__next__()
c2.__next__()
print(name,"doing")
for i in range (10):
time.sleep(1)
print("第{}个".format(i+1))
c1.send(i)
c2.send(i)
def eater(name):
print(name,"eating=====")
while True:
baozi = yield
print("包子{}号来了,给{}吃了".format(baozi+1,name))
maker("cc")
===================================================================
可迭代对象和迭代器
1.可迭代对象:Iterable 可循环的对象(例:list,tuple,dict,set,str,生成器)
2.迭代器:Iterator可以被next()函数调用 不断返回下一个值的对象
3.生成器都是迭代器
4.列表字典字符串不是迭代器! 但可用iter(列表/字典/字符串)获得迭代器对象
==================================================================
内置方法(节选)
exec()执行字符串
a="print(\"hello\")"
exec(a)
eval(str)将字符串去掉“”(”蜕皮“)
eval("2+1")
结果:3
lambda作为匿名函数关键词
filter()从一组数据中过滤想要的
res1=filter(lambda n:n>5,range(10))
结果:6,7,8,9
map()对传入的数值进行处理后返回
res2=map(lambda n:2*n,range(10))
结果:0,2,4,6,8,10,12,14,16,18
zip() 将两个数组对应成元组 按少的来
a=[1,2,3,4,5]
b=["a","b","c"]
for i in zip(a,b):
print(i)
结果:(1, 'a') (2,'b') (3,'c')
返回当前目录的相对路径
print(__file__)
os.path.abspath(文件)#返回当前目录的绝对路径
import os
print(os.path.abspath(__file__))
os.path.dirname(“路径”)返回去文件名的绝对路径(返回当前文件上级)
a=os.path.dirname(os.path.abspath(__file__))
import sys
print(sys.path)
---恢复内容结束---
readme的规范
1软件定位,软件的基本功能
2运行代码的方法:安装环境,启动命令
3简要的使用说明
4代码目录结构说明,更详细点可以说明软件的基本原理
5常见问题说明
========================================================
列表生成器
[i*2 for i in range(10)] #开头的可为函数也可为方程
已经在内存中生成 存在并可调用
==========================================================
生成器:generator(有yield关键词存在 就是生成器)
1.一边循环一边计算的机制
2.循环到时才能使用
3.只记录当前位置
a=(i*2 for i in range(10))
特点 :
1.在调用时只能用__next__()方法 一次次调用(用来唤醒yield)
2.不可像调用列表一样调用生成器
作用:
1.在运行循环时可进出* 增加语句
##生成器并行##
import time
def maker(name):
c1=eater("a")
c2=eater("b")
c1.__next__()
c2.__next__()
print(name,"doing")
for i in range (10):
time.sleep(1)
print("第{}个".format(i+1))
c1.send(i)
c2.send(i)
def eater(name):
print(name,"eating=====")
while True:
baozi = yield
print("包子{}号来了,给{}吃了".format(baozi+1,name))
maker("cc")
===================================================================
可迭代对象和迭代器
1.可迭代对象:Iterable 可循环的对象(例:list,tuple,dict,set,str,生成器)
2.迭代器:Iterator可以被next()函数调用 不断返回下一个值的对象
3.生成器都是迭代器
4.列表字典字符串不是迭代器! 但可用iter(列表/字典/字符串)获得迭代器对象
==================================================================
内置方法(节选)
exec()执行字符串
a="print(\"hello\")"
exec(a)
eval(str)将字符串去掉“”(”蜕皮“)
eval("2+1")
结果:3
lambda作为匿名函数关键词
filter()从一组数据中过滤想要的
res1=filter(lambda n:n>5,range(10))
结果:6,7,8,9
map()对传入的数值进行处理后返回
res2=map(lambda n:2*n,range(10))
结果:0,2,4,6,8,10,12,14,16,18
zip() 将两个数组对应成元组 按少的来
a=[1,2,3,4,5]
b=["a","b","c"]
for i in zip(a,b):
print(i)
结果:(1, 'a') (2,'b') (3,'c')
返回当前目录的相对路径
print(__file__)
os.path.abspath(文件)#返回当前目录的绝对路径
import os
print(os.path.abspath(__file__))
os.path.dirname(“路径”)返回去文件名的绝对路径(返回当前文件上级)
a=os.path.dirname(os.path.abspath(__file__))
import sys
print(sys.path)