单列表迭代与多个列表理解

2023-12-02

我有一个数据列表,我需要将其中的一些元素复制到几个不同的列表中。对列表进行单次迭代或执行多个列表理解会更好吗

E.g.

def split_data(data):
    a = []
    b = []
    c = []
    for d in data:
        if d[0]   >   1 : a.append(d)
        if d[1]   == 'b': b.append(d)
        if len(d) ==  3 : c.append(d)

    return a, b, c

Versus

def split_data(data):
    a = [d for d in data if d[0]   >   1 ]
    b = [d for d in data if d[1]   == 'b']
    c = [d for d in data if len(d) ==  3 ]

    return a, b, c

我知道更Python式的方法是使用列表理解,但在这种情况下是这种情况吗?


在第一个示例代码中,它只需要使用多个 if 语句迭代数据一次,而后面的代码需要迭代数据 3 次。我相信列表理解在大多数情况下会在数据迭代次数相同的情况下获胜。

对于像您的示例这样的简单操作,我更喜欢列表理解方法,当操作变得更复杂时,为了代码的可读性,也许其他方法会更好。

对 2 函数的一些基准测试应该会告诉您更多信息。 基于我使用一些虚拟数据集对这两个函数进行的快速基准测试,运行时间如下。该运行时可能并不总是正确,具体取决于数据集

# without list comprehension
>>> timeit.timeit('__main__.split_data([("a","b")] * 1000000)', 'import __main__', number=1)
0.43826036048574224

# with list comprehension
>>> timeit.timeit('__main__.split_data([("a","b")] * 1000000)', 'import __main__', number=1)
0.31136326966964134
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

单列表迭代与多个列表理解 的相关文章

  • 我怎样才能更多地了解Python的内部原理? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我使用Python编程已经有半年多了 我对Python内部更感兴趣 而不是使用Python开发应用程序
  • python 模拟第三方模块

    我正在尝试测试一些处理推文的类 我使用 Sixohsix twitter 来处理 Twitter API 我有一个类充当 Twitter 类的外观 我的想法是模拟实际的 Sixohsix 类 通过随机生成新推文或从数据库检索它们来模拟推文的
  • 从 ffmpeg 获取实时输出以在进度条中使用(PyQt4,stdout)

    我已经查看了很多问题 但仍然无法完全弄清楚 我正在使用 PyQt 并且希望能够运行ffmpeg i file mp4 file avi并获取流式输出 以便我可以创建进度条 我看过这些问题 ffmpeg可以显示进度条吗 https stack
  • 如何使用 imaplib 获取“消息 ID”

    我尝试获取一个在操作期间不会更改的唯一 ID 我觉得UID不好 所以我认为 Message ID 是正确的 但我不知道如何获取它 我只知道 imap fetch uid XXXX 有人有解决方案吗 来自 IMAP 文档本身 IMAP4消息号
  • 通过列表理解压平列表列表

    我正在尝试使用 python 中的列表理解来展平列表 我的清单有点像 1 2 3 4 5 6 7 8 只是为了打印这个列表列表中的单个项目 我编写了这个函数 def flat listoflist for item in listoflis
  • 将数据帧行转换为字典

    我有像下面的示例数据这样的数据帧 我正在尝试将数据帧中的一行转换为类似于下面所需输出的字典 但是当我使用 to dict 时 我得到了索引和列值 有谁知道如何将行转换为像所需输出那样的字典 任何提示都非常感激 Sample data pri
  • if 语句未命中中的 continue 断点

    在下面的代码中 两者a and b是生成器函数的输出 并且可以评估为None或者有一个值 def testBehaviour self a None b 5 while True if not a or not b continue pri
  • 更改 `base_compiledir` 以将编译后的文件保存在另一个目录中

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

    我使用 python suds 来实现客户端 并且在发送的 SOAP 标头中得到了错误的命名空间前缀 用于定义由element ref 在 wsdl 中 wsdl 正在引用数据类型 xsd 文件 请参见下文 问题出在函数上GetRecord
  • 从 python 发起 SSH 隧道时出现问题

    目标是在卫星服务器和集中式注册数据库之间建立 n 个 ssh 隧道 我已经在我的服务器之间设置了公钥身份验证 因此它们只需直接登录而无需密码提示 怎么办 我试过帕拉米科 它看起来不错 但仅仅建立一个基本的隧道就变得相当复杂 尽管代码示例将受
  • Numpy 过滤器平滑零区域

    我有一个 0 及更大整数的 2D numpy 数组 其中值代表区域标签 例如 array 9 9 9 0 0 0 0 1 1 1 9 9 9 9 0 7 1 1 1 1 9 9 9 9 0 2 2 1 1 1 9 9 9 8 0 2 2 1
  • Seaborn Pairplot 图例不显示颜色

    我一直在学习如何在Python中使用seaborn和pairplot 这里的一切似乎都工作正常 但由于某种原因 图例不会显示相关的颜色 我无法找到解决方案 因此如果有人有任何建议 请告诉我 x sns pairplot stats2 hue
  • 如何使用列表作为pandas数据框中的值?

    我有一个数据框 需要列的子集包含具有多个值的条目 下面是一个带有 运行时 列的数据框 其中包含程序在各种条件下的运行时 df condition a runtimes 1 1 5 2 condition b runtimes 0 5 0 7
  • 创建嵌套字典单行

    您好 我有三个列表 我想使用一行创建一个三级嵌套字典 i e l1 a b l2 1 2 3 l3 d e 我想创建以下嵌套字典 nd a 1 d 0 e 0 2 d 0 e 0 3 d 0 e 0 b a 1 d 0 e 0 2 d 0
  • 使用 NumPy 将非均匀数据从文件读取到数组中

    假设我有一个如下所示的文本文件 33 346 1223 10 23 11 23 12 23 13 23 14 23 15 23 16 24 10 24 11 24 12 24 13 24 14 24 15 24 16 25 14 25 15
  • Tkinter - 浮动窗口 - 调整大小

    灵感来自this https stackoverflow com a 22424245 13629335问题 我想为我的根窗口编写自己的调整大小函数 但我刚刚注意到我的代码显示了一些性能问题 如果你快速调整它的大小 你会发现窗口没有像我希望
  • 当鼠标悬停在上面时,intellisense vscode 不显示参数或文档

    我正在尝试将整个工作流程从 Eclipse 和 Jupyter Notebook 迁移到 VS Code 我安装了 python 扩展 它应该带有 Intellisense 但它只是部分更糟糕 我在输入句点后收到建议 但当将鼠标悬停在其上方
  • 字典和数组作为类变量与实例变量

    这是赚取积分的简单方法 请解释以下内容 class C a b 0 c def init self self x def d self k v self x k v self a k v self b v self c append v d
  • Elastic Beanstalk 中的 enum34 问题

    我正在尝试在 Elastic Beanstalk 中设置 django 环境 当我尝试通过requirements txt 文件安装时 我遇到了python3 6 问题 File opt python run venv bin pip li
  • 检查字典键是否有空值

    我有以下字典 dict1 city name yass region zipcode phone address tehsil planet mars 我正在尝试创建一个基于 dict1 的新字典 但是 它不会包含带有空字符串的键 它不会包

随机推荐

  • 使用 fetch 和 get 方法调用 API

    我必须在 api 调用中设置标头 我的 POST API 调用工作正常 但在我的 get api 调用中 标头未设置 return fetch http api call com method GET headers Accept appl
  • 在Python单元测试中模拟类和类方法

    我正在使用 python 的 unittest mock 在 Django 应用程序中进行一些测试 我想检查一个类是否被调用 以及它的实例上的方法是否也被调用 例如 给出这个简化的示例代码 In project app py def do
  • psql“更多无法识别”错误

    我在 Windows 8 1 64 位 上使用 postgresql 9 4 交互式终端 psql 安装并创建数据库和表并将数据插入行后 我想查看数据 但是 当我输入 SELECT FROM my table 我收到错误 more 不被识别
  • 如何控制Android中的Home按钮? [复制]

    这个问题在这里已经有答案了 我在我的应用程序中 我有控制后退按钮 但我也想控制主页按钮 我已经写了代码 但我无法控制HOME按钮 这是我的代码 帮助我实现它 public boolean onKeyDown int keyCode KeyE
  • 在 Kaggle 上训练模型时反复收到“清理已调用...”消息。我们怎样才能摆脱这个呢? (使用 Keras 的 CNN 模型)

    model compile optimizer adam loss categorical crossentropy metrics accuracy history model fit train data epochs 1 valida
  • Android 中使用 gson 将 Json 转换为对象

    我有一个包含很多条目的 JSON 数组 并希望使用 gson 将每个检查反序列化为单个对象 我的问题是找到合适的对象结构 Gson gson new Gson Type collectionType new TypeToken
  • 如何将 http 请求转换为正确的对象?

    在我的 ASP Net MVC3 项目中 我创建了一个绑定基本模型的 ModelBinder 在我的视图中 我从继承自基本模型的模型创建一个对象 现在我想知道当我按下提交按钮时 哪个模型是通过 ModelBinder 中的反射创建的 但是如
  • 使用参数在批处理文件中运行脚本

    我正在编写一个批处理文件 并在这个批处理文件中执行一个脚本 批处理文件 PowerShell NoProfile ExecutionPolicy Bypass Command Start Process PowerShell Argumen
  • svnkit,列出SVN存储库的所有文件,而不检出文件

    svnkit com 是一个SVNJava 中的库 例如 您可以获取SVN存储库的日志 如下所示 SVNClientManager newInstance getLogClient SVNLogClient doLog SVNURL url
  • 服务合约实现另一个接口

    请告诉我这是否可能 我有一个客户端 win 表单应用程序和一个 C 中的 wcf 应用程序 这是我的模型 共同项目 public interface IServiceA string DoWorkA 我没有在 Common 项目中使用 Se
  • Node.js 可读文件流未获取数据

    我正在尝试创建一个可读文件流 我可以从中读取各个字节 我正在使用下面的代码 var rs fs createReadStream file on open function var buff rs read 8 Read first 8 b
  • bash 命令中 !#:* !#:1- 的含义是什么?

    在以下 Bash 命令中 以下内容的含义是什么 1 echo This is a sentence 1 gt text3 它正在使用bash 的历史替换机制 具体来说 指当前行 直到但不包括 本身 是该行命令名称之后的部分 因此 在本例中
  • 如何从system();获取日志?

    有没有办法从 system 获取日志 就像我做的时候一样system open com apple nike 我应该得到Couldn t open application com apple nike Reason 8 applicatio
  • Visual Studio Code 使用 NVM 指定的节点版本

    VS Code 是否可以使用 NVM 指定的节点版本 我本地安装了6 9 2 即使切换到另一个版本后 从 OS X 终端 不是 VS Code 终端 重新启动 VS Code VS Code 仍然显示使用 6 9 2 OS X 终端 Mac
  • 在 R 中使用 for 循环进行卡方分析

    我正在尝试对数据中变量的所有组合进行卡方分析 我的代码是 Data lt esoph 1 3 OldStatistic lt NA for i in 1 ncol Data 1 for j in i 1 ncol Data Statisti
  • 为什么jquery中的同步ajax调用不支持超时?

    我正在读书herejquery 中的同步 ajax 调用不会超时 这是技术限制 还是只是作者不想支持的东西 当 ajax 调用是同步的时 实际上会发生什么 浏览器通过以下方式处理同步 异步请求XMLHttp请求API 但它没有内置的超时功能
  • Python 日志记录:INFO、DEBUG 日志未显示

    Python版本 2 7 我正在使用下面的代码在控制台上显示日志 但是 不显示 INFO 和 DEBUG 日志 Code import logging class LogTest def init self logger obj loggi
  • 通过 http 发送基本身份验证

    我正在尝试从需要基本身份验证的页面读取源代码 但是 在我的 HttpWebRequest 中使用标头甚至凭据 我仍然会返回未经授权的异常 401 string urlAddress URL string UserName MyUser st
  • 计算节点之间的路径长度(具有未知的边)?

    问题是如何在不知道边类型的情况下使用 sparql 查询计算三重存储 RDF 中两个节点 概念 之间的距离 本质上 就是使用Dijkstras algorithm 找到三重存储中两个概念之间的较短路径 如果我们知道边的类型 就有可能 计算节
  • 单列表迭代与多个列表理解

    我有一个数据列表 我需要将其中的一些元素复制到几个不同的列表中 对列表进行单次迭代或执行多个列表理解会更好吗 E g def split data data a b c for d in data if d 0 gt 1 a append