Python:filter(函数,序列)和map(函数,序列)之间的区别

2023-12-20

我正在阅读 Python 文档,以真正深入了解 Python 语言,并遇到了过滤器和映射函数。我以前使用过过滤器,但从未使用过映射,尽管我在 SO 的各种 Python 问题中都看到过这两种情况。

在阅读了 Python 教程中的相关内容后,我对两者之间的区别感到困惑。例如,从5.1.3.函数式编程工具 http://docs.python.org/2/tutorial/datastructures.html:

>>> def f(x): return x % 2 != 0 and x % 3 != 0
...
>>> filter(f, range(2, 25))
[5, 7, 11, 13, 17, 19, 23]

and

>>> def cube(x): return x*x*x
...
>>> map(cube, range(1, 11))
[1, 8, 27, 64, 125, 216, 343, 512, 729, 1000]

对我来说,它们的功能几乎完全相同,因此我进入终端以交互方式运行 Python 并测试了我自己的案例。我用了map对于上面的第一个和第二个实例,以及第一个实例 (return x % 2 != 0 and x % 3 != 0)它返回一个布尔值列表而不是数字。

为什么map有时返回布尔值,有时返回实际值?

有人可以向我解释一下两者之间的确切区别吗map and filter?


list(map(cube, range(1, 11)))

相当于

[cube(1), cube(2), ..., cube(10)]

虽然返回的列表是

list(filter(f, range(2, 25)))

相当于result跑步后

result = []
for i in range(2, 25):
    if f(i):
        result.append(i)

使用时请注意map,结果中的项目是函数返回的值cube.

相反,返回的值f in filter(f, ...)不是中的项目result. f(i)仅用于确定if价值i应保存在result.


在Python2中,map and filter返回列表。在Python3中,map and filter返回迭代器。多于,list(map(...)) and list(filter(...))用于确保结果是一个列表。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python:filter(函数,序列)和map(函数,序列)之间的区别 的相关文章

  • Spark 请求最大计数

    我是 Spark 的初学者 我尝试请求允许我检索最常访问的网页 我的要求如下 mostPopularWebPageDF logDF groupBy webPage agg functions count webPage alias cntW
  • django_openid_auth TypeError openid.yadis.manager.YadisServiceManager 对象不是 JSON 可序列化

    I used django openid auth在我的项目上 一段时间以来它运行得很好 但今天 我测试了该应用程序并遇到了这个异常 Environment Request Method GET Request URL http local
  • python 中的代表

    我实现了这个简短的示例来尝试演示一个简单的委托模式 我的问题是 这看起来我已经理解了委托吗 class Handler def init self parent None self parent parent def Handle self
  • 将数据帧行转换为字典

    我有像下面的示例数据这样的数据帧 我正在尝试将数据帧中的一行转换为类似于下面所需输出的字典 但是当我使用 to dict 时 我得到了索引和列值 有谁知道如何将行转换为像所需输出那样的字典 任何提示都非常感激 Sample data pri
  • Argparse nargs="+" 正在吃位置参数

    这是我的解析器配置的一小部分 parser add argument infile help The file to be imported type argparse FileType r default sys stdin parser
  • Pandas 数据帧到 numpy 数组 [重复]

    这个问题在这里已经有答案了 我对 Python 很陌生 经验也很少 我已经设法通过复制 粘贴和替换我拥有的数据来使一些代码正常工作 但是我一直在寻找如何从数据框中选择数据 但无法理解这些示例并替换我自己的数据 总体目标 如果有人真的可以帮助
  • 切片 Dataframe 时出现 KeyError

    我的代码如下所示 d pd read csv Collector Output csv df pd DataFrame data d dfa df copy dfa dfa rename columns OBJECTID Object ID
  • 在Python中调整图像大小

    我有一张尺寸为 288 352 的图像 我想将其大小调整为 160 240 我尝试了以下代码 im imread abc png img im resize 160 240 Image ANTIALIAS 但它给出了一个错误TypeErro
  • 更改 `base_compiledir` 以将编译后的文件保存在另一个目录中

    theano base compiledir指编译后的文件存放的目录 有没有办法可以永久设置theano base compiledir到不同的位置 也许通过修改一些内部 Theano 文件的内容 http deeplearning net
  • python suds SOAP 请求中的名称空间前缀错误

    我使用 python suds 来实现客户端 并且在发送的 SOAP 标头中得到了错误的命名空间前缀 用于定义由element ref 在 wsdl 中 wsdl 正在引用数据类型 xsd 文件 请参见下文 问题出在函数上GetRecord
  • 使用 OLS 回归预测未来值(Python、StatsModels、Pandas)

    我目前正在尝试在 Python 中实现 MLR 但不确定如何将我找到的系数应用于未来值 import pandas as pd import statsmodels formula api as sm import statsmodels
  • 如何使用列表作为pandas数据框中的值?

    我有一个数据框 需要列的子集包含具有多个值的条目 下面是一个带有 运行时 列的数据框 其中包含程序在各种条件下的运行时 df condition a runtimes 1 1 5 2 condition b runtimes 0 5 0 7
  • 无法在 osx-arm64 上安装 Python 3.7

    我正在尝试使用 Conda 创建一个带有 Python 3 7 的新环境 例如 conda create n qnn python 3 7 我收到以下错误 Collecting package metadata current repoda
  • 使用 Firefox 绕过弹出窗口下载文件:Selenium Python

    我正在使用 selenium 和 python 来从中下载某些文件web page http www oceanenergyireland com testfacility corkharbour observations 我之前一直使用设
  • mac osx 10.8 上的初学者 python

    我正在学习编程 并且一直在使用 Ruby 和 ROR 但我觉得我更喜欢 Python 语言来学习编程 虽然我看到了 Ruby 和 Rails 的优点 但我觉得我需要一种更容易学习编程概念的语言 因此是 Python 但是 我似乎找不到适用于
  • 如何在 OSX 上安装 numpy 和 scipy?

    我是 Mac 新手 请耐心等待 我现在使用的是雪豹 10 6 4 我想安装numpy和scipy 所以我从他们的官方网站下载了python2 6 numpy和scipy dmg文件 但是 我在导入 numpy 时遇到问题 Library F
  • 您可以将操作直接应用于map/reduce/filter 中的参数吗?

    map and filter通常可以与列表理解互换 但是reduce并不那么容易被交换map and filter 此外 在某些情况下我仍然更喜欢函数语法 但是 当您需要对参数本身进行操作时 我发现自己正在经历语法体操 最终必须编写整个函数
  • 限制 django 应用程序模型中的单个记录?

    我想使用模型来保存 django 应用程序的系统设置 因此 我想限制该模型 使其只能有一条记录 极限怎么办 尝试这个 class MyModel models Model onefield models CharField The fiel
  • 具有自定义值的 Django 管理外键下拉列表

    我有 3 个 Django 模型 class Test models Model pass class Page models Model test models ForeignKey Test class Question model M
  • 您可以使用关键字参数而不提供默认值吗?

    我习惯于在 Python 中使用这样的函数 方法定义 def my function arg1 None arg2 default do stuff here 如果我不供应arg1 or arg2 那么默认值None or default

随机推荐

  • Canvas.drawText() 更改不同尺寸图像的文本大小

    我正在绘制文本Bitmap 图像转换为位图 使用Canvas API drawText 方法 我能够在上面绘制文字Bitmap但我正在努力解决以下错误 如果从设备相机中单击图像 则在其上绘制的文本具有正确的大小 但是 如果从图库中随机选择一
  • Aptana 间歇性无法关闭输出流

    希望有人能帮忙解决这个问题 因为它让我发疯 我在 OS X Lion 上使用 Aptana 3 1 但与之前版本的 Aptana 和 Snow Leopard 遇到了同样的问题 我设置了多个 ftp 连接 但在尝试上传文件时遇到间歇性问题
  • C++:函数/方法声明中与号“&”和星号“*”之间的区别?

    它们之间是否存在某种微妙的区别 void a1 float b b 1 a1 b and void a1 float b b 1 a1 b 它们都执行相同的操作 或者从 main 看来是这样 但第一个显然更短 但是我看到的大多数代码都使用第
  • PHP 函数 session_module_name 到底有什么用?

    PHP Session 相关函数有这个 会话模块名称 http www php net manual en function session module name php 文档只说 session module name 获取和 或设置当
  • 如何以编程方式安装 VisualStudio 扩展?

    如何获取已安装的 VisualStudio 扩展的列表 不知何故通过DTE 只要名字就足够公平了 这有帮助吗 System IServiceProvider serviceProvider package as System IServic
  • 链接生成的 Jooq 类时如何解决不明确的匹配

    我已经在 J PA 中定义了我的模型 并正在为我的应用程序编写一些查询 并且我正在使用 JOOQ 生成的类将所有表连接在一起 以检查请求的资源是否确实属于请求用户 但是 当我这样做时 我收到以下警告 Ambiguous match foun
  • python split 多个分隔符错误?

    我正在查看对这个先前提出的问题的答复 使用多个分隔符分割字符串 https stackoverflow com questions 1059559 split strings with multiple delimiters 对于这个问题的
  • 带有圆角半径和阴影的 SWIFT UITableViewCell

    我一直在尝试创建一个带有圆角和阴影的自定义表格视图单元格 我设法创建了圆角 但阴影仅显示在角上 而没有显示在其他地方 对于阴影和圆角 您可以使用以下代码 override func tableView tableView UICollect
  • 如何使用https://angular.io/docs/ts/latest/guide/webpack.html中的vendor.ts

    根据https angular io docs ts latest guide webpack html https angular io docs ts latest guide webpack html您应该能够在vendor ts文件
  • Python MySQL 连接器返回字节数组而不是常规字符串值

    我正在将一张表中的数据加载到 pandas 中 然后将该数据插入到新表中 但是 我看到的不是普通的字符串值 而是字节数组 bytearray b TM16B0I8 它应该是TM16B0I8 我在这里做错了什么 My code engine
  • 构建 10x10 UIButton 网格的最佳方法?

    我将有一个 10x10 网格的 UIButton 对象 每个 UIButton 都需要通过行号和列号来引用 因此它们可能应该存储在某种类型的数组中 我的问题 创建这个网格的最简单方法是什么 以编程方式还是通过 Interface Build
  • Android:时间选择器对话框

    我一直在尝试在对话框中创建时间选择器 但在片段类中收到错误消息 该类型未定义方法 is24HourFormat Activity DateFormat 在以下行中 在行 DateFormat is24HourFormat getActivi
  • 自定义元素选择器

    有没有办法用 CSS 选择所有自定义元素 我想让所有自定义元素默认为块元素 大多数浏览器默认使它们内联 然后根据需要覆盖它 我的规则可能看起来像这样 custom display block 所有自定义元素在标准中都有破折号 因此我可以利用
  • WPF 中的错误提供程序

    我正在查看工具箱中的 WPF 组件 但找不到 2005 2008 中出现的错误提供程序 被移除了吗 the 错误提供者 http msdn microsoft com en us library system windows forms e
  • 当我们切换到夏令时并返回时处理日期

    我想用R进行时间序列分析 我想制作一个时间序列模型并使用 timeDate 和 Forecast 包中的函数 我有 CET 时区的日内数据 15 分钟数据 每小时 4 个数据点 3 月 31 日实施夏令时 我丢失了通常拥有的 96 个数据点
  • 正则表达式:两个匹配之间的负向预测

    我正在尝试构建一个类似这样的正则表达式 match word exclude specific word match word 这似乎适用于消极的前瞻 但当我遇到这样的情况时 我遇到了问题 match word exclude specif
  • Android 如何在PrimaryClipChanged 上从剪贴板获取字符串?

    我正在尝试使用以下侦听器将文本复制到剪贴板中 import android content ClipboardManager OnPrimaryClipChangedListener import com orhanobut logger
  • 性能方面 MVC 比 ASP.NET 中的 Web 窗体更好吗

    我们将在 ASP NET 中开发一个网站 那么是使用 MVC 还是 Web 表单更好呢 这取决于您想要建立什么样的网站以及您创建网站的知识和经验 如果您了解自己的知识并且对自己 接近金属 工作的能力 事实上 充满信心 我想您可以使用 ASP
  • 如何在 HQL 中转义冒号?

    我的查询的条件部分如下 where foo bar like 查询将执行但没有结果 我认为这是因为冒号 因为它是 HQL 中的保留字符 那么我怎样才能在不发送的情况下逃脱它 作为我的查询的参数 我已经用过 and 没有成功 我找到了一个解决
  • Python:filter(函数,序列)和map(函数,序列)之间的区别

    我正在阅读 Python 文档 以真正深入了解 Python 语言 并遇到了过滤器和映射函数 我以前使用过过滤器 但从未使用过映射 尽管我在 SO 的各种 Python 问题中都看到过这两种情况 在阅读了 Python 教程中的相关内容后