Python:Day17 生成器、time和random模块
列表生成式:
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模块的更多相关文章
- python标准库介绍——27 random 模块详解
==random 模块== "Anyone who considers arithmetical methods of producing random digits is, of cour ...
- python学习笔记(七)- 递归、python内置函数、random模块
1.函数的不固定参数: #参数不是必填的.没有限制参数的个数.返回参数组的元组 def syz(*args): #参数组,不限制参数个数 #‘args’参数的名字可以随便命名 print(args) ...
- python(30)——【random模块】【if __name__ =='__main__'】【os模块】
一.random模块(随机模块) 1.random 常用模块介绍 import random print(random.random()) #返回[0,1)之间的随机浮点数 print(random. ...
- 18 python 初学(time、random 模块)
# _author: lily # _date: 2019/1/13 import time import datetime print(help(time)) # print(time.time() ...
- Day13 Python基础之time/datetime/random模块一(十一)
time模块 import time print(help(time)) time.time() #return current time in seconds since the Epoch as ...
- python第十九课——random模块中的常用函数
1.random():返回一个[0,1)的随机浮点数(双精度浮点数) 2.uniform(a,b): 返回[a,b]之间的一个随机浮点数(双精度浮点数) [注意]a和b接受的数据大小随意 例如:3.r ...
- python3.7 random模块
#!/usr/bin/env python __author__ = "lrtao2010" #python3.7 random模块 import random #随机模块 # r ...
- 第12.4节 Python伪随机数数生成器random模块导览
random模块实现了各种分布的伪随机数生成器,常用功能包括: random.seed(a=None, version=2):初始化随机数生成器,如果 a 被省略或为 None ,则使用当前系统时间. ...
- Python day17 模块介绍1(time,random)
module模块和包的介绍(略掉了) 常用模块 # time模块 import time print(time.time())#时间戳,在1970年开始到现在一共多少秒 print(time.gmti ...
- python学习之random模块
Python中的random模块用于生成随机数.下面介绍一下random模块中最常用的几个函数. random.random random.random()用于生成一个0到1的随机符点数: 0 < ...
随机推荐
- datetime模块+calendar模块
datetime: """ 模块中的类: datatime 同时有时间和日期 timedelta 主要用于计算时间的跨度 tzinfo 时区相关 time 只关注时间 d ...
- css3巧用选择器配合伪元素
一 . 前言 有时我们在写底部导航栏时,会有很多超链接,每个链接间用“|”分割,如下图: 可能刚入门的朋友会想到这样完成,再单独设置span的样式, 今天主要介绍怎么样用css3简单快速的完成这个效果 ...
- js正则表达式 URL格式匹配详解
0.URL格式 protocol :// hostname[:port] / path / [;parameters][?query]#fragment [;parameters]没见过 这里就不做相 ...
- java.net.ProtocolException:unexpected end of stream
原因:php 给android 写接口出现java.net.ProtocolException:unexpected end of stream,查找android方面原因时发现数据超长 ,发现htm ...
- PHP7.27: Cookie and Session
<?php // 有的浏览器不支持Cookie,这要考虑的 $cFile="count.txt"; $acctime=time(); if(file_exists($cFil ...
- 照葫芦画瓢系列之Java --- Maven的集成和使用
一.和Eclipse的集成 1.添加Maven 在windows--> preferences中找到maven选项,如下图: 如果没有上图的Name为apache-maven-3.5.2的项,则 ...
- 用ABP只要加人即可马上加快项目进展(二) - 分工篇
2018年和1998年其中两大区别就是: 前端蓬勃发展, 前后端分离是一个十分大的趋势. 专门的测试人员角色被取消, 多出了一个很重要的角色, 产品经理 ABP只要加入即可马上加快项目进展, 选择 ...
- ViewPager实现滑动翻页效果
实现ViewPager的滑动翻页效果可以使用ViewPager的setPageTransformer方法,如下: import android.content.Context; import andr ...
- Html富文本编辑器
本文推荐两款简单的富文本编辑器[KindEditor,NicEdit]用于获得所见即所得的编辑效果,本文仅供学习分享使用,如有不足之处,还请指正. 概述 这两款编辑器都是采用JavaScript编写, ...
- Stable Fur Generation on Mesh
After tested the Maya 2015 XGen Grooming, we dropped it, that's really slow and unstable, totally no ...