列表生成式:

a = [x*2 for x in range(10)]    #这是最简单的列表生成式,range换成其它的序列也OK
a = [f(x) for x in range(10)] #将里将前面对变量的操作改为函数也是可以的,这样灵活性就更大了

变量赋值方式:

a,b = 10,20
t = ('',8) #不一定要是元组,只要是序列就行
a,b = t #变量数量必须要和t中元素一样多,不然报错

生成器可以通过两种方式创建:

1、小括号

2、定义函数,将return换成yield

s = (x*2 for x in range(1000))  #用小括号括起来就是创建一个生成器对象,中括号就是一个列表生成式
print(s) #<generator object <genexpr> at 0x00000000011A0FC0>
def foo():
print('ok')
yield 1 #yield相关于retrun,只不过带有个这关键字,这就不是一个函数了,而是一个生成器
print('ok2')
yield 2
g = foo() #必须要进行赋值,不然如果next中是foo()的话,执行达不到想要的效果,why???
next(g)
next(g)

生成器创建之后通过两种方式执行:

1、next

2、send()  可以传值

next(s)    #等价于s.__next__()     在py2中是s.next()
def foo():
print('ok')
count=yield 1 #此句先执行yield,然后停止,下一次才执行赋值
print(count)
print('ok2')
yield 2
g = foo()
g.send(None) #如果没有进入生成器,第一次不能赋值
g.send(1) #向里面变量传值

重新审视for循环:

for i in s:    #s只要是可迭代对象就可以,可迭代对象有:列表,字典,字符串,生成器等
print(i)

for 循环内部三件事:
1、调用可迭代对象的iter方法返回一个迭代器对象
2、不断调用迭代器对象的Next方法
3、处理stopiteration

iterable和iterator区别

iterable是可迭代对象,如:列表,字典、字符串等都是可迭代对像,但他们不是iterator

interator是迭代器,迭代器可以使用next方法

isinstance(对象,类型)  #用来判断对象是否属于某一类型

from collections import Iterator,Iterable
l = [1,2,3,5]
d = iter(l) #将对象转换成迭代器
print(isinstance(l,list))

模块:

模块通过import来引用

时间模块:

print(help(time))

Greenwich Mean Time   格林威治平均时间/格林威治标准时间

UTC:Coordinated Universal Time协调世界时

#输出结果为结构时间格式:
print(time.gmtime()) #time.struct_time(tm_year=2018, tm_mon=2, tm_mday=8, tm_hour=7, tm_min=58, tm_sec=35, tm_wday=3, tm_yday=39, tm_isdst=0)
print(time.localtime()) #time.struct_time(tm_year=2018, tm_mon=2, tm_mday=8, tm_hour=15, tm_min=58, tm_sec=35, tm_wday=3, tm_yday=39, tm_isdst=0) #输出结果为时间戳:
print(time.time()) #1518077218.8718002 #将结构时间转换成时间戳
print(time.mktime(time.localtime())) #1518078086.0 #将时间戳转换成结构时间(其实就是在localtime和gmtime后面加了个时间戳作为参数):
print(time.localtime(1518078086)) #time.struct_time(tm_year=2018, tm_mon=2, tm_mday=8, tm_hour=16, tm_min=21, tm_sec=26, tm_wday=3, tm_yday=39, tm_isdst=0)
print(time.gmtime(1518078086)) #time.struct_time(tm_year=2018, tm_mon=2, tm_mday=8, tm_hour=8, tm_min=21, tm_sec=26, tm_wday=3, tm_yday=39, tm_isdst=0) #将结构时间格式输出为指定格式的日期字符串:
print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime())) #2018-02-08 16:12:36 #将日期字符串转换为结构日期格式:
print(time.strptime('2018-02-06 19:15:51','%Y-%m-%d %H:%M:%S')) #time.struct_time(tm_year=2018, tm_mon=2, tm_mday=6, tm_hour=19, tm_min=15, tm_sec=51, tm_wday=1, tm_yday=37, tm_isdst=-1) #提取结构时间中相应的值:
a=time.strptime('2018-02-06 19:15:51','%Y-%m-%d %H:%M:%S')  #只要是结构时间格式就行,
print(a.tm_year)  #2018,提取结构时间中的年份值
print(a.tm_mday)  #6,表示为月份中的第几天
print(a.tm_wday)  #1,表示为一周中的第几天,周一为第0天
print(a.tm_yday)  #37,表示为一年中的第几天
#将时间转成固定格式:
print(time.asctime(time.localtime()))  #Mon Jun 25 21:07:30 2018
print(time.ctime(time.time())  #Mon Jun 25 21:07:30 2018

#时间加减
import datetime print(datetime.datetime.now()) #2018-02-08 17:10:23.985800
print(datetime.datetime.now()+datetime.timedelta(-3)) #2018-02-05 17:10:23.985800
print(datetime.datetime.now()+datetime.timedelta(hours=8)) #2018-02-09 01:10:23.985800 #时间替换
current_time = datetime.datetime.now()
print(current_time.replace(minute=2,day=15)) #2018-02-15 17:02:23.444800

随机数模块:

import random

print(random.random())   #随机产生[0-1)之间的浮点数
print(random.uniform(1,4)) #随机产生一个[1,4]之间的浮点数
#这两个都可以返回浮点数,只是一个可以指定范围,一个不可以
print(random.randint(1,8)) #返回[1,8]之间的一个整数
print(random.randrange(1,3)) #从1-2中随机选择一个整数,不包括3,可以添加步长,和range用法差不多
#这两个都可以返回整数,只是一个可以加步长,一个不可以加
#上面这4个方法的参数只能是数字,不能是字符串或字母
print(random.choice('hello')) #从序列中随机选择一个元素,只能一个,想选多个用sample
print(random.choice(['hello',4,[123]]))
print(random.sample(['',4,[1,2]],2)) #从中随机选择几个,选择几个取决于最后面那个参数
#这两个都可以返回序列中的某个元素,只是一个可以选多个,一个只能选一个
item= [1,'a','e',8,'y']
random.shuffle(item) #将序列重新洗牌
print(item) #[1, 'y', 8, 'a', 'e']

string模块

import string
print(string.digits) #
print(string.ascii_letters) #abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
print(string.ascii_lowercase) #abcdefghijklmnopqrstuvwxyz
print(string.ascii_uppercase) #ABCDEFGHIJKLMNOPQRSTUVWXYZ
print(string.punctuation) #!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~

Python:Day17 生成器、time和random模块的更多相关文章

  1. python标准库介绍——27 random 模块详解

    ==random 模块== "Anyone who considers arithmetical methods of producing random digits is, of cour ...

  2. python学习笔记(七)- 递归、python内置函数、random模块

    1.函数的不固定参数: #参数不是必填的.没有限制参数的个数.返回参数组的元组 def syz(*args): #参数组,不限制参数个数 #‘args’参数的名字可以随便命名 print(args) ...

  3. python(30)——【random模块】【if __name__ =='__main__'】【os模块】

    一.random模块(随机模块) 1.random 常用模块介绍 import random print(random.random()) #返回[0,1)之间的随机浮点数 print(random. ...

  4. 18 python 初学(time、random 模块)

    # _author: lily # _date: 2019/1/13 import time import datetime print(help(time)) # print(time.time() ...

  5. Day13 Python基础之time/datetime/random模块一(十一)

    time模块 import time print(help(time)) time.time() #return current time in seconds since the Epoch as ...

  6. python第十九课——random模块中的常用函数

    1.random():返回一个[0,1)的随机浮点数(双精度浮点数) 2.uniform(a,b): 返回[a,b]之间的一个随机浮点数(双精度浮点数) [注意]a和b接受的数据大小随意 例如:3.r ...

  7. python3.7 random模块

    #!/usr/bin/env python __author__ = "lrtao2010" #python3.7 random模块 import random #随机模块 # r ...

  8. 第12.4节 Python伪随机数数生成器random模块导览

    random模块实现了各种分布的伪随机数生成器,常用功能包括: random.seed(a=None, version=2):初始化随机数生成器,如果 a 被省略或为 None ,则使用当前系统时间. ...

  9. Python day17 模块介绍1(time,random)

    module模块和包的介绍(略掉了) 常用模块 # time模块 import time print(time.time())#时间戳,在1970年开始到现在一共多少秒 print(time.gmti ...

  10. python学习之random模块

    Python中的random模块用于生成随机数.下面介绍一下random模块中最常用的几个函数. random.random random.random()用于生成一个0到1的随机符点数: 0 < ...

随机推荐

  1. setTimeout()与clearTimeout()

    setTimeout(code,millisec)setTimeout() 只执行 code 一次.如果要多次调用,请使用 setInterval() 或者让 code 自身再次调用 setTimeo ...

  2. windows 上用 docker 部署aspnetcore 2.0

       首先下载docker for windows 并且 安装. 这其中需要显卡支持虚拟化  windows系统升级到专业版  bois 启用虚拟   通过vs2017 创建一个net core ap ...

  3. 现在有两个变量,分别是a = 3, b = 4,那么我们不用第三个变量来调换a和b的值。

    现在有两个变量,分别是a = 3, b = 4,那么我们不用第三个变量来调换a和b的值. <!DOCTYPE html><html><head>    <me ...

  4. javascript event 事件解析

    event对象只在事件发生的过程中才有效. event的某些属性只对特定的事件有意义.比如,fromElement 和 toElement 属性只对 onmouseover 和 onmouseout ...

  5. 2018-07-30 对DLL库中的接口进行中文命名

    补注: 此文是在探究在Windows上编写DLL时不能使用中文命名 · Issue #74 · program-in-chinese/overview问题时编写的演示用代码, 代码基于官方文档. 正如 ...

  6. 服务器端使用jstat定位GC问题的有关命令

    jstat命令可以查看堆内存各部分的使用量,以及加载类的数量. 命令的格式如下: jstat    [-命令选项]    [vmid]     [间隔时间/毫秒]      [查询次数]  注意!!! ...

  7. 自定义View类

    一.如何创建自定义的View类 ①.创建一个继承android.view.View类的Java类,并且重写构造方法(至少需要重写一个构造方法) ②.根据需要重写其他方法 ③.在项目的活动中,创建并实例 ...

  8. MyBatis笔记----mybatis分页

    mybatis版本3.4以下 结构 spring-mvc.xml <?xml version="1.0" encoding="UTF-8"?> &l ...

  9. setfont()函数

    设计字体显示效果 Font mf = new Font(String 字体,int 风格,int 字号); 字体:TimesRoman, Courier, Arial等 风格:三个常量 lFont.P ...

  10. JavaWeb入门笔记

    Java web笔记 一.HTTP协议 HTTP(超文本传输协议),它是一种主流B/S架构中应用的通信协议.具有以下特点: 1.无状态 服务端不会记录客户端每次提交的请求,服务器一旦相应客户端之后,就 ...