python使用列表推导式的示例分析
发表于:2025-02-02 作者:千家信息网编辑
千家信息网最后更新 2025年02月02日,这篇文章主要介绍了python使用列表推导式的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。使用列表推导式一个列表推导式包含以
千家信息网最后更新 2025年02月02日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安全错误
数据库的锁怎样保障安全
手机上的宝可梦服务器
室内安防监测服务器软件设计
北大SNL数据库
证件上的指纹会上传公安数据库吗
信安签名服务器指示灯
访问服务器内虚拟机的数据库
如何更新apk文件的数据库
国内软件开发很差
商泰汽车软件开发待遇
软件开发公司售后服务怎样
长沙市服务器包装选哪家
设有两个数据库表 父表
云服务器公网宽带
无线传感器网络安全实验指导
魔兽世界打什么服务器好玩
飞行安全基础数据库
网络技术期末复习提纲
数据库检索中如何规避付费
清华同方服务器维修中心
丑男视频软件开发
网络安全法官网
高并发低时延 数据库
无锡java软件开发
软件开发的流程csdn
sql信息库数据库
国家出台的网络安全法律法规
网络安全监督管理现状
kaplan网络技术
如何选择服务器机柜系统
网络安全保护费用