python基础学习-14

迭代器/生成器

14.1.1 迭代器

迭代:更新管代。每一次重复都有一个新的结果。

人类的繁衍:(祖--父-你 -子--孙)

苹果手机:(苹果--苹果15)

每一次的重复得出(一个)新的结果

可迭代对象:可以把里面的值一个更新迭代(遍历)---python中语法上讲内置了iter方法的对象。

常见的可迭代对象:字符串,列表,元组,字典集合,都是可迭代对象。

  • 迭代器:

    • 可以给序列或者非序列提供迭代(取值的方式)

    • 可以让我们取值方式变成一次只取一个值。

作用:(1)电脑内存是有限的空间。

(2)数据是无限的。

(3)通过迭代取值的方式让无限的数据在有限的空间内存储,并且同一时刻只出现一个值,可以存放无限多个数。

变量名() = iter(可迭代对象)
next(迭代器)
​
li = [1,3,5,7,9]
dd = iter(li)
#dd 就是迭代器
print(next(dd))
print(next(dd))
print(next(dd))
print(next(dd))
print(next(dd))
# 迭代取值的次数不能超过迭代对象的成员数
​
li = [1,3,5,7,9]
# dd = li.__iter__()
# #dd 就是迭代器
# print(dd.__next__())
# print(dd.__next__())
# print(dd.__next__())
# print(dd.__next__())
# print(dd.__next__())
# 迭代取值的次数不能超过迭代对象的成员数
​
# for i in li:
#     print(i)
dd = iter(li)
while True:
    try:
        res = next(dd)
        print(res)
    except StopIteration:
        break

14.2.1 生成器

生成器:自定义的迭代器

当函数里面有yield的关键字的关键字的时候,这个函数就是一个生成器。

迭代器变成生成器=(return+返回值)变成(yield + 返回值)

yield后面加返回值,函数不会结束而是会挂起,但是return写返回值就相当于直接结束了函数

生成器格式:
def 函数():
    函数代码
    yield 返回值
例子:
​
def fun()
    ls=[1,4,6,8,10]
    for i in ls:
        yield ls
        
res=fun()
print(next(res))
print(next(res))
print(next(res))
print(next(res))
print(next(res))
#取值的数量不能超过函数的数量

生成器的作用:简化代码,让函数逐步输出需要的值,节省空间。

14.3.1 标准库

(1)time方法

import time
​
print(time.time())
#这个返回的是当前时间的时间戳:可以理解为秒数,说是1970年之后经过的浮点秒数
print(time.localtime())
#返回本地时间,格式化时间元组:注意这个是返回本地的
print(time.gmtime())
#返回世界标准时间utc,格式化的时间元组
​
​
print(time.mktime())
#这个是个方法,可以将格式化时间改成浮点型时间格式
怎么使用我举个例子
print(time.mktime(time.gmtime()))
print(time.mktime(time.localtime()))
#只要是时间元组,那么mktime方法就可以处理成浮点型格式
​
​
时间元组格式化后的解释
tm_year=2024,  表示当前年份
tm_mon=1,    表示当前月份--12个月
tm_mday=17,  一个月当中的第几天
tm_hour=20, 小时--24小时制
tm_min=49,  分钟
tm_sec=0,   秒
tm_wday=2,  星期几-- 从0开始#换而言之,这里的2指的是星期三
tm_yday=17,  一年当中的第几天
tm_isdst=0  是不是夏令时,只要他的值不是1,他就不是夏令时。
​
​
​

打印日期
import time
print(time.strftime(%Y年/%m月/%d日 %H时%M分%S秒,time.localtime())
​
      
%y:只有年份
%Y:世纪
%m:月
%d:天
      
      
%H时
%M分
%S秒
  

​
把时间字符串转化为时间元组
import time
print(time.strptime('20240117','%Y%m%d'))
​
​
把时间字符串解析成时间元组
import time
print(time.strptime('20240117','%Y%m%d'))
#换成格式化元组
​
time.sleep(2)
# 可以让我们的程序延时执行,扩里面指定参数是时间秒为单位

(2)random方法

impoort random
​
print(random.randint(1,2))
#生成指定区间内的整数包头也包尾
​
print(random.random())
#生成大于0小于1的随机小数
​
print(random.uniform(1,5))
#生成指定区间内的随机小数,不包含1,2,3,4,5这些整数
​
print(ranfom.choice(['石头','剪刀','布']))
import random
ls=[1,2,3,4,5,6]
random.shuffle(ls)
#直接打乱列表里面的排序
#下标随机
print(ls)

(3)OS文件目录方法

import os
​
print(os.getcwd())
#返回当前项目的根目录
​
​
print(os.mkdir('deno/first'))
​
#创建一个文件夹,当前目录文件下创建
#加个first可以在deno里再加入一个叫first的文件夹
​
print(os.rmdir(deno/first))
#删除空目录,空的才能删除
​
​
print(os.rename('deno','demo1'))
#给文件重命名
​
#指定的文件如果不存在会报错的
​
​
print(os.path.exists('deno1'))
#判断文件在不在当前目录,存在就返回Ture,不存在就返回False
​
​
print(os.patn.jion('python','python程序','python学习第三周'))
#把名字组合成路径
​
print(os.path.dirname(r'python\python程序\python学习第三周'))
# 把路径返回上一层
​
print(os.path.basename(r'python\python程序\python学习第三周'))
#返回路径的最后一个目录

(4)sys方法

import sys
print(sys.path)
#获取当前项目的环境
print(sys.argv)
#获取当前文件的绝对路径
print(sys.version)
#获取当前解释器的版本
print(sys.platform)
#获取当前操作系统环境的

(5)json方法

json 是一种数据格式,用来存储简单的数据结构和对象的文件

可以跟web应用程序进行数据交互。

跨平台,跨语言

json---python数据交换。
​
import json
ls = [1,2,3,4,5]
print(ls)
print(type(ls))
​
#list
​
​
data = json.dumps(ls) #python的数据转换成json的数据
print(data)
print(type(data))
​
#str
​
ss = json.loads(data) #json数据还原成python数据
print(ss)
print(type(ss))
​
#list
​
pythonjson
dict()object(对象)
listarray(数组)
strstring
int, floatnumber(数字)
Truetrue(boolean)
Falsefalse(boolean)
Nonenull(空)

python的数据转换成json的数据对数据是有要求和限制的。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值