Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >比较Python中的列表推导式和map(),filter()函数

比较Python中的列表推导式和map(),filter()函数

作者头像
杜逸先
发布于 2023-04-13 08:17:51
发布于 2023-04-13 08:17:51
2K00
代码可运行
举报
运行总次数:0
代码可运行

比较 Python 中的列表推导式和 map(),reduce()函数

对一个列表(迭代器)中的元素进行批量处理是一个很常见的业务需求,在 Python 中,一般有三种解决方案:for循环,列表推导式,或者map(),filter()函数。

例如我们计算一下 100 以内奇数的平方和。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# for loop
total = 0
for x in range(100):
    if x % 2:
        total += x * x
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# list comprehension
sum(x * x for x in range(100) if x % 2)
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# map(), filter()
sum(map(lambda x: x * x, filter(lambda x: x % 2, range(100))))

for循环方案最容易理解但有些繁琐,列表推导式方案就简洁了很多,map(),filter()方案存在一个问题就是要理解它们嵌套关系和执行顺序。

三种方案的效率也可以进行一下比较。

可以看到 for 循环和列表推导式的效率是相近的,而map(),filter()方案就慢很多,这是因为map(),filter()方案中进行了大量的函数调用,而 Python 解释器对列表推导式有专门的优化。

我按照自己的尺度给三种方案做了一个评价。

方案

可理解度

简洁度

执行效率

for loop

★★★

★★★

list comprehension

★★

★★★

★★★

map(),filter()

★★

★★

综合而言,在 Python 中进行列表(迭代器)的处理,列表推导式是更简洁,效率更高的方案,也更 Pythonic,不过当列表推导式过于复杂的时候,转而使用for循环会使代码更好理解和可维护。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-11-222,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
25.Python基础函数与推导式详解
本教程专为Python初学者设计,将深入浅出地讲解Python中几个常用且强大的特性:推导式、zip函数、reversed函数和sorted函数。通过本教程,即使是零基础的小白也能轻松掌握这些实用技巧!
全栈若城
2025/04/28
680
24.Python推导式教程:快速初始化各种序列!
推导式(Comprehension)是Python中的一种独特语法,它让我们能用一行代码创建序列(如列表、字典、集合)。就像是一个"魔法公式",帮你快速生成数据!
全栈若城
2025/04/26
1060
Python | 优雅的列表推导式
采用 for 循环,加条件判断,很轻松就可以实现。但有没有更简洁的实现方式?列表推导式(List Comprehension)。对比看看两者的效果。
PyStaData
2020/07/21
6230
算法金 | 推导式、生成器、向量化、map、filter、reduce、itertools,再见 for 循环
For 循环,老铁们在编程中经常用到的一个基本结构,特别是在处理列表、字典这类数据结构时。但是,这东西真的是个双刃剑。虽然看起来挺直白,一用就上手,但是,有时候用多了,问题也跟着来了。
算法金
2024/07/07
1740
算法金 | 推导式、生成器、向量化、map、filter、reduce、itertools,再见 for 循环
Python列表推导式
列表推导式是Python构建列表(list)的一种快捷方式,可以使用简洁的代码就创建出一个列表.
Python碎片公众号
2021/02/26
7990
Python列表推导式
#抬抬小手学Python# 列表推导式与字典推导式
在 Python 中推导式是一种非常 Pythonic 的知识,本篇博客将为你详细解答列表推导式与字典推导式相关的技术知识。
查理不是猹
2021/12/29
2730
python 列表推导式(经典代码)
截止到目前为止,python基础内容已经学习了50%左右,在学习编程过程中,我们不仅要学习python语法,同时也需要学习如何把自己代码写的更美观,效率更高。
猿说编程[Python和C]
2020/02/27
1.2K0
python 列表推导式(经典代码)
Python 异步: 异步推导式(18)
我们可以通过“async for”表达式使用异步推导式来遍历异步生成器和异步迭代器。
数据科学工厂
2023/03/21
8170
Python 异步: 异步推导式(18)
Python的这些高级用法你都知道吗?
python高级用法Python很棒,它有很多高级用法值得细细思索,学习使用。本文将根据日常使用,总结介绍Python的一组高级特性,包括:列表推导式、迭代器和生成器、装饰器。
7537367
2020/08/06
1.3K0
从菜鸟到高手:掌握Python推导式,让代码飞起来,列表、集合、字典,一网打尽,用Python推导式优雅地重构你的数据操作
"在Python的广阔世界里,隐藏着一种让程序员们爱不释手的秘密武器——推导式。想象一下,你正站在数据处理的战场上,面对着成千上万条数据,需要快速筛选、转换、聚合。这时,你手中的列表推导、集合推导、字典推导就像三把锋利的剑,轻轻一挥,便能将复杂的数据操作化繁为简,让代码如同行云流水般优雅。今天,就让我们一起揭开这些神奇推导式的面纱,探索它们背后的力量与魅力。"
小白的大数据之旅
2024/11/20
2120
Python函数式编程思想与面试实战
函数式编程是一种强调使用纯函数、高阶函数、不可变数据结构和声明式编程等概念的编程范式。在Python面试中,理解和应用函数式编程思想不仅能体现候选人的编程技巧与思维方式,也能为代码带来更高的可读性、可维护性和并发友好性。本篇博客将深入浅出地阐述Python函数式编程的核心理念,剖析面试中常见的问题、易错点以及应对策略,并通过代码示例,助您在面试中从容应对函数式编程相关挑战。
Jimaks
2024/04/17
1800
python中的map和filter避坑指南
◆ Pythonic的方式使用map和filter 列表迭代在python中是非常pythonic的使用方式 def inc(x): return x+1 >>> list(map(inc,range(10))) [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] # pythonic way >>> [inc(i) for i in range(10)] [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] def is_even(x): return x%2==0 >
IT大咖说
2022/10/08
5780
python中的map和filter避坑指南
Python面试题之Python中的lambda map filter reduce zip
map()将函数func应用于序列seq中的所有元素。在Python3之前,map()返回一个列表,列表中的每个元素都是将列表或元组“seq”中的相应元素传入函数func返回的结果。Python 3中map()返回一个迭代器。
Jetpropelledsnake21
2019/02/15
1.2K0
详解Python列表推导式
列表推导式,也叫列表解析式,英文名称为list comprehension,可以使用非常简洁的方式来快速生成满足特定需求的列表,代码具有非常强的可读性。另外,Python的内部实现对列表推导式做了大量优化,可以保证很快的运行速度。列表推导式的语法形式为: [表达式 for 变量 in 序列或迭代对象 if 条件表达式] 列表推导式在逻辑上相当于一个循环,只是形式更加简洁,例如: >>> aList = [x*x for x in range(10)] 相当于 >>> aList = [] >>> for x
Python小屋屋主
2018/04/16
1.2K0
「Python」列表推导式
请注意,本文编写于 327 天前,最后修改于 326 天前,其中某些信息可能已经过时。
曼亚灿
2023/05/17
2310
Python基础回顾基本数据类型和运算容器分支和循环函数、生成器和类map, reduce和filter列表生成(list comprehension)字符串文件操作和pickle异常多进程(mult
Python shell输入import this 可以看到The Zen of Python 基本数据类型和运算 基本数据类型 Python中最基本的数据类型包括整型,浮点数,布尔值和字符串。类型是不需要声明的,比如: a = 1 # 整数 b = 1.2 # 浮点数 c = True # 布尔类型 d = "False" # 字符串 e = None # NoneType 其中#是行内注释的意思。最后一个None是NoneType,注意不是0,在Python中利用t
SeanCheney
2018/04/24
1.5K0
Python基础回顾基本数据类型和运算容器分支和循环函数、生成器和类map, reduce和filter列表生成(list comprehension)字符串文件操作和pickle异常多进程(mult
(二十) 初遇python甚是喜爱之list Comprehensions列表推导式
各位读者大大们大家好,今天学习python的列表推导式,并记录学习过程欢迎大家一起交流分享。
XXXX-user
2019/07/23
3310
(二十) 初遇python甚是喜爱之list Comprehensions列表推导式
Python最常用的函数、基础语句有哪些?你都知道吗
内置函数是python自带的函数方法,拿来就可以用,比方说zip、filter、isinstance等
派大星的数据屋
2022/04/03
1.1K0
Python最常用的函数、基础语句有哪些?你都知道吗
【Python进阶,一学就会】系列1(文末免费送10本书)
列表推导式(list comprehension)为for循环提供了一个简短且更好的选择。它用于我们需要对列表中的每一个元素执行操作的迭代过程中。
量化投资与机器学习微信公众号
2019/02/26
5020
【Python环境】Python函数式编程指南(3):迭代器
3. 迭代器 3.1. 迭代器(Iterator)概述 迭代器是访问集合内元素的一种方式。迭代器对象从集合的第一个元素开始访问,直到所有的元素都被访问一遍后结束。 迭代器不能回退,只能往前进行迭代。这并不是什么很大的缺点,因为人们几乎不需要在迭代途中进行回退操作。 迭代器也不是线程安全的,在多线程环境中对可变集合使用迭代器是一个危险的操作。但如果小心谨慎,或者干脆贯彻函数式思想坚持使用不可变的集合,那这也不是什么大问题。 对于原生支持随机访问的数据结构(如tuple、list),迭代器和经典for循环的索引
陆勤_数据人网
2018/02/26
8200
推荐阅读
相关推荐
25.Python基础函数与推导式详解
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验