推导表达式

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__':

  

最新文章

  1. Label自适应高度
  2. css3旋转倾斜3d小动画
  3. [转]详细介绍java中的数据结构
  4. pycharm常用快捷键
  5. Solr数据库连接之多表关联
  6. SICP-1.7-递归函数
  7. #Python3.6.2(32位) pip安装 和 pygame 环境配置
  8. 【一天一道LeetCode】#107. Binary Tree Level Order Traversal II
  9. Tomcat启动失败的几种解决办法
  10. html基础学习1
  11. Pyspider上手
  12. HDU 4612 Warm up 连通图缩点
  13. (转)Java静态内部类的实例化问题
  14. linux学习第一天 (Linux就该这么学) 找到一本不错的Linux电子书,附《Linux就该这么学》章节目录
  15. JavaScript执行优先顺序
  16. 7. myeclipse10反编译插件安装
  17. 【sql】使用触发器
  18. Hive split 分割函数
  19. grafana使用小节
  20. Servlet 调用过程

热门文章

  1. python2和3使用pip时的问题
  2. IAR KEIL ECLIPSE使用JlinkScript文件进行调试
  3. JavaScript中 this 的指向
  4. 【vim】实时加密文本 ggVGg?
  5. 升级版updateOozie.sh
  6. OpenWrt启动过程分析+添加自启动脚本【转】
  7. 【转】通过xml处理sql语句时对小于号与大于号的处理转换
  8. python创建系统用户和用户组
  9. C:malloc/calloc/realloc/alloca内存分配函数
  10. Tomcat启动项目时内存溢出问题如何解决