python使用列表推导式的示例分析
发表于:2025-11-17 作者:千家信息网编辑
千家信息网最后更新 2025年11月17日,这篇文章主要介绍了python使用列表推导式的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。使用列表推导式一个列表推导式包含以
千家信息网最后更新 2025年11月17日python使用列表推导式的示例分析
这篇文章主要介绍了python使用列表推导式的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
使用列表推导式
一个列表推导式包含以下几个部分:
一个输入序列
一个表示输入序列成员的变量
一个可选的断言表达式
一个将输入序列中满足断言表达式的成员变换成输出列表成员的输出表达式
num = [1, 4, -5, 10, -7, 2, 3, -1]filtered_and_squared = []for number in num: if number > 0: filtered_and_squared.append(number ** 2)print filtered_and_squared# [1, 16, 100, 4, 9]
而如果使用filter、lambda和map函数,则能够将代码大大简化:
num = [1, 4, -5, 10, -7, 2, 3, -1]filtered_and_squared = map(lambda x: x ** 2, filter(lambda x: x > 0, num))print filtered_and_squared# [1, 16, 100, 4, 9]## 更简化的一种写法 num = [1, 4, -5, 10, -7, 2, 3, -1]filtered_and_squared = [ x**2 for x in num if x > 0]print filtered_and_squared# [1, 16, 100, 4, 9]
列表推导也可能会有一些负面效应,那就是整个列表必须一次性加载于内存之中,这对上面举的例子而言不是问题,甚至扩大若干倍之后也都不是问题。但是总会达到极限,内存总会被用完。
针对上面的问题,生成器(Generator)能够很好的解决。生成器表达式不会一次将整个列表加载到内存之中,而是生成一个生成器对象(Generator objector),所以一次只加载一个列表元素。
生成器表达式同列表推导式有着几乎相同的语法结构,区别在于生成器表达式是被圆括号包围,而不是方括号:
num = [1, 4, -5, 10, -7, 2, 3, -1]filtered_and_squared = ( x**2 for x in num if x > 0 )print filtered_and_squared#at 0x00583E18>for item in filtered_and_squared: print item# 1, 16, 100 4,9
这比列表推导效率稍微提高一些,让我们再一次改造一下代码:
num = [1, 4, -5, 10, -7, 2, 3, -1]def square_generator(optional_parameter): return (x ** 2 for x in num if x > optional_parameter)print square_generator(0)#at 0x004E6418># Option Ifor k in square_generator(0): print k# 1, 16, 100, 4, 9# Option IIg = list(square_generator(0))print g# [1, 16, 100, 4, 9]
除非特殊的原因,应该经常在代码中使用生成器表达式。但除非是面对非常大的列表,否则是不会看出明显区别的。 再来看一个通过两阶列表推导式遍历目录的例子:
import osdef tree(top): for path, names, fnames in os.walk(top): for fname in fnames: yield os.path.join(path, fname)for name in tree('C:\Users\XXX\Downloads\Test'): print name感谢你能够认真阅读完这篇文章,希望小编分享的"python使用列表推导式的示例分析"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!
表达式
生成
生成器
篇文章
代码
内存
序列
成员
问题
输入
示例
分析
之中
例子
总会
输出
明显
特殊
相同
一次性
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
最新网络安全股有哪些南洋股份
购买服务器属于什么项目
网络安全法确定了什么
ps快捷改数据库
网络技术语言编程
淘宝服务市场软件开发程序
网络技术学历要求
nec服务器一直响
东川区品牌软件开发零售价格
南京浪潮服务器供货厂
app软件开发公司如何选择
怎么把数据库设置为硬盘
紧身衣视频软件开发
html5发送接收数据库
DHCP服务器的主要配置文件
打印机扫描后显示找不到服务器
在数据库的设计中 将
深圳市云易通网络技术
ps5下载队列错误重构数据库
突然网络连接不到服务器
互联网科技创新孵化中心
邮箱服务器怎么接受邮件
央视关于网络安全
psv加盟服务器
中文法律数据库对比
db2本机创建数据库
栾城软件开发价格
工控网络安全学院
网络安全属于信息安全的分支
广东省数字政府网络安全黄辉