IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> python:三元运算表达式、generator生成器 -> 正文阅读

[Python知识库]python:三元运算表达式、generator生成器

三元运算是一个简单并且方便阅读的功能。可以部分替代if-else的写法

常规语法:

a = "晴天"
if a == "晴天":
  action = "跑步"
else:
  action = "睡觉"
语法:为真时的结果 if 判断条件 else 为假时的结果

a = "晴天"
action = "跑步" if a == "晴天" else "睡觉"
# 可理解为:今天跑步,如果是晴天,否则睡觉。
print(action)  # 跑步

生成器:在Python中,使用了 yield 的函数被称为生成器(generator)。跟普通函数不同的是,生成器是一个返回迭代器的函数,只能用于迭代操作,更简单点理解生成器就是一个迭代器。在调用生成器运行的过程中,每次遇到 yield 时函数会暂停并保存当前所有的运行信息,返回 yield 的值, 并在下一次执行 next() 方法时从当前位置继续运行。调用一个生成器函数,返回的是一个迭代器对象。

特点:迭代器是一个可以记住遍历的位置的对象。迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。迭代器有两个基本的方法:iter() 和 next()。

创建生成器:把一个列表生成式的[]改成(),就创建了一个generator。即:g = (i for i in range(5))

访问生成器的三种方式:

1、g.__next__()
2、next(g)
3、for 遍历。生成器常规使用最多,也是最推荐的使用方式。

创建生成器:

g = (i for i in range(5))
print(g)  # <generator object <genexpr> at 0x000001ECC3FFBDD0>
访问生成器的 3种方式:
1、g.next()
2、next(g)
3、for 遍历
print(g.__next__())  # 0
print(next(g))  # 1
print("*" * 30)
for i in g:
    print(i)  # 2 3 4

作用:生成器表达式是对内存空间的优化。他们不需要像方括号的列表解析一样,一次构造出整个结果列表。他们运行起来比列表解析式可能稍慢一些,因此生成器对于非常大的结果集合运算是最优的选择。

案例:psutil库需要安装。pip install psutil

import psutil
import os
import time


def run(data_type):
    memory_list = []
    start = time.time()
    for i1 in range(10):
        for i3 in data_type:
            print(i3)
        memory_list.append(psutil.Process(os.getpid()).memory_info().rss)

    print('内存使用分别:', memory_list)
    print('内存使用平均:', sum(memory_list) / len(memory_list))
    print("总耗时:", time.time() - start)


if __name__ == '__main__':
    l = [i2 for i2 in range(10000)]
    run(l)
    # 内存使用分别:[14696448, 14696448, 14696448, 14696448, 14696448, 14696448, 14696448, 14696448, 14696448, 14696448]
    # 内存使用平均:14696448.0
    # 总耗时:0.7735769748687744

    # g = (i2 for i2 in range(10000))
    # run(g)
    # 内存使用分别:[14376960, 14376960, 14376960, 14376960, 14376960, 14376960, 14376960, 14376960, 14376960, 14376960]
    # 内存使用平均:14376960.0
    # 总耗时: 0.1084132194519043
  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-08-31 15:24:46  更:2021-08-31 15:26:09 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 11:35:46-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码