| |
|
开发:
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进阶学习(2)--列表推导和生成器表达式 -> 正文阅读 |
|
[Python知识库]python进阶学习(2)--列表推导和生成器表达式 |
列表推导列表推导(list comprehesion)可以从可迭代类型中的元素过滤或加工,构建出一个序列。 不用列表推导:
用列表推导:
还可以用来生成两个或以上的可迭代类型的笛卡尔积,即两层或多层 for 循环的列表推导。 两层 for 循环的列表推导:
相当于:
需要注意的是,列表推导的前一个 for 循环就是外层 for 循环,后一个 for 循环就是内层 for 循环。 另外,python3.x 就不存在变量泄露的问题,列表推导内部的变量是局部的,仅限于列表推导内,同时也可以引用上下文的同名变量:
可以看到 x 变量并没有改变,如果是在 python2.x 中,它的值就被改变为 'C'。
使用列表推导的最大好处就是可读性更高。因此,一般建议两层 for 循环内使用列表推导。 生成器表达式生成器表达式的语法跟列表推导类似,不同的是表达式外面用括号。但是,本质上的不同是生成器表达式遵守迭代器协议,逐个地产出元素,而不是一次性产出一个所有的数据,而列表推导先建立一个完整的列表,然后再把这个列表传递到某个构造函数里。 总的来说就是,生成器表达式比列表推导更节省内存。
如果生成器表达式是函数调用过程的唯一参数,那么可以省略外层的括号。 下面的例子比较,可以看出生成器表达式是在每次执行 for 循环时,才产出一个元素。
t 是一个生成器,第一次执行 for 循环遍历后,可以逐个输出 s 的字符,但是第二次执行 for 循环时,生成器 t 已经产生所有的元素,相当于指针已经指向 s 的末尾,就不再有元素产出,所以什么元素都没有输出。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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/16 0:03:48- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |