Python 学习DAY 17 列表生成式,生成器,迭代器,time模块,random模块

********************************************列表生成式******************

a=[x for x in range(10)]     [0,1,2,3,4,5,6,7,8,9]

a=[x*2 for x in range(10)]   [0,2,4,6,8,10.....]                                                                              a=[x*x for x in range(10)]       平方               

def f(n):

  return n**3

a=[f(x) for x in range(10)]        也可以放函数

 

t=('123',8)

a,b=t      a='123' b=8    赋值取元组元素 

********************************************生成器***************************

a=(x*2 for x in range(10))  小括号,生成器对象  (生成器创建方式1)        

next(a)==a.__next__()  拿到第一个数0,内部方法,不在明面上用  

next(a)=2 

next(a)=4   只能按顺序一个一个拿

生成器在创建的时候已经决定了能计算出值的个数,调用next的次数超过这个值就会报stopiteration

生成器就是一个可迭代对象 iterablre,可以用for循环遍历

for循环内部做了三件事:

  1.调用对象的iter()方法,返回一个迭代器对象

  2.启用一个while循环

      i=next(list_iterator)

生成器两种创建方式:

  1.()方式

  2.yield关键字方式

def foo()            (生成器创建方式2)

  print('ok')

  yield 1

  print('ok2')

  yield 2

g=foo()

next(g)   从头执行到yield 1,并返回1给next(g)

next(g)   从头执行到yield 2,并返回2给next(g)

for i in foo():

  print i

输出结果 ok 1 OK2 2

for i in 可迭代对象,什么是可迭代对象,内部有iter方法的都是可迭代对象

b.send(None) == next(b)  第一次send前如果没有next,只能传一个send(None)

def bar():

  print('ok')

  count=yield 1

  print(count)

  yield 2

b=bar

next(b)

b.send('eeee')    给count赋值eeee,将2返回至b.send('eeee')

*****************************************迭代器****************************************

生成器都是迭代器,迭代器不一定是生成器

l=【1,2,3,4】,元组,字典

d=iter(l)    返回一个迭代器对象

next(d)=1

什么是迭代器?满足两个条件:(迭代器协议)

1.有iter方法

2.有next方法 

1.调用可迭代对象的iter方法,返回一个迭代器对象

2.调用迭代器的next方法

3.处理stopiteration异常

isinstance 判断对象是否是正确的类型

isinstance (l,iterable)ture   可迭代对象

isinstance (l,iterator)FAlse 迭代器

***************************************time模块*********************************** 

impot time

time.time()  拿到时间戳*****

time.clock() 计算CPU执行的时间

time.sleep() *****

time.gmtime() 英国结构化时间,utc时间

time.localtime() 本地时间******

time.strftime((%Y--%m--%d %H:%M:%S),(time.localtime)) 字符串时间******

time.strptime('2019-10-9','%Y-%m-%d) 字符串时间转换成结构化时间 ,单取一个年,可能用到********

表示时间的方式:时间戳、结构化时间,字符串格式化时间

time.ctime(时间戳,默认为空),时间戳转化固定格式字符串时间

time.mktime(结构化时间),结构化时间转化时间戳

*************************datetime模块************************************

import datetime

datetime.datetime.now()    友好的字符串时间表示

datetime.date.time.

*******************************random模块*******************************

import random

random.random()   创建一个(0,1)的随机数

random.randint(1,8) 创建一个1,8的整数,包括8

random.choice('hello') 在序列里随机选一个数

random.sample(【['1,2,3',4,【1,2】】,2)随机选两个

random.randrange(1,10),1~9选一个数,不包括10

chr(65)=A  ASCII码转换

posted @ 2020-06-14 20:42  小将博杨  阅读(119)  评论(0)    收藏  举报