执行生成器表达式最Pythonic的方法是什么?

2023-11-30

Python 越来越多的功能变成了“惰性可执行文件”,比如生成器 表达式和其他类型的迭代器。 然而,有时,我发现自己想要滚动一个单行“for”循环,只是为了执行一些操作。

让循环实际执行的最Pythonic的事情是什么?

例如:

a = open("numbers.txt", "w")
(a.write ("%d " % i) for i in xrange(100))
a.close()

不是实际的代码,但你明白我的意思。相反,如果我使用列表生成器,则会产生创建一个充满“None”的 N 长度列表的副作用。

目前我所做的是使用表达式作为调用“any”或“all”的参数。但我想找到一种不依赖于循环中执行的表达式的结果的方法 - “任何”和“全部”都可以根据评估的表达式而停止。

需要明确的是,这些是我已经知道的方法,每种方法都有其缺点:

[a.write ("%d " % i) for i in xrange(100))]

any((a.write ("%d " % i) for i in xrange(100)))

for item in (a.write ("%d " % i) for i in xrange(100)): pass

有一种明显的方法可以做到这一点,这就是您应该这样做的方式。没有理由以聪明的方式做到这一点。

a = open("numbers.txt", "w")
for i in xrange(100):
    a.write("%d " % i)
d.close()

延迟执行给您带来了一个巨大的好处:它允许您将一个序列传递给另一段代码,而不必将整个内容保存在内存中。它用于创建高效的序列作为数据类型。

在这种情况下,您不希望延迟执行。你想要执行力。你可以……执行。与一个for loop.

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

执行生成器表达式最Pythonic的方法是什么? 的相关文章

  • 如何并排绘制具有相同 X 坐标的条形图(“闪避”)

    import matplotlib pyplot as plt gridnumber range 1 4 b1 plt bar gridnumber 0 2 0 3 0 1 width 0 4 label Bar 1 align cente
  • 在 SQLAlchemy 中,过滤器是在连接之前还是之后应用?

    使用 SQLAlchemy 我执行如下查询 import models as m import sqlalchemy as sa s session maker q s query m ShareCount m Article join m
  • DataFrame.loc 的“索引器太多”

    我读了关于切片器的文档 http pandas pydata org pandas docs stable advanced html using slicers一百万次 但我从来没有理解过它 所以我仍在试图弄清楚如何使用loc切片Data
  • 为什么我会收到 ValueError:系列的真值不明确。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()

    以下代码给出了值错误 major males for row in recent grads if recent grads Men gt recent grads Women major males append recent grads
  • cxfreeze virtualenv 中缺少 distutils 模块

    从 python3 2 项目运行 cxfreeze 二进制文件时 我收到以下运行时错误 project dist project distutils init py 13 UserWarning The virtualenv distuti
  • argparse 不检查位置参数

    我正在创建一个脚本 它使用 argparse 接受位置参数和可选参数 我已经阅读了 Doug 的教程和 python 文档 但找不到答案 parser argparse ArgumentParser description script t
  • Python FTP下载550错误

    我编写了一个 ftp 爬虫来下载特定文件 它会一直工作 直到找到要下载的特定文件 然后抛出此错误 ftplib error perm 550 该文件存在于我的下载文件夹中 但文件大小为 0 kb 我需要转换某些内容才能下载吗 我可以访问 f
  • Pandas 中每列的曲线拟合 + 外推值

    我有一个包含大约 300 列的数据集 每一列都与深度相关 Pandas DataFrame 的简化版本看起来像这样 import matplotlib pyplot as plt import numpy as np import pand
  • Pygame:有人可以帮我实现双跳吗?

    我知道已经有其他关于此问题的帖子了 但我的运动系统与我发现的有点不同 所以随后我问这个问题 我的运动系统基于一个名为的命名元组Move up left right down 然后就是这个 def update self move block
  • 在python中使用编解码器utf-8打开文件错误

    我在 windows xp 和 python 2 6 4 上执行以下代码 但它显示 IOError 如何打开名称带有 utf 8 编解码器的文件 gt gt gt open unicode txt euc kr encode utf 8 T
  • Python GTK3 Treeview 向上或向下移动选择

    如何在树视图中向上或向下移动所选内容 我的想法是 我可以使用向上和向下按钮将选择向上移动一行或向下移动一行 我的 Treeview 使用 ListStore 不确定这是否重要 首先 我将使用我熟悉的 C 代码 如果您在将其翻译为 Pytho
  • 列表中的特定范围(python)

    我有一个从文本字符串中提取的整数列表 因此当我打印该列表 我称之为test I get 135 2256 1984 3985 1991 1023 1999 我想打印或制作一个仅包含特定范围内的数字的新列表 例如1000 2000之间 我尝试
  • 解析整数集的字符串并列出间隔

    I have 2 5 7 9 12 string 我想从中获取 2 5 7 8 9 12 列表 python中有没有内置的函数 Thanks UPD 我想 直接的答案是No 不管怎样 谢谢你的 片段 使用一个 建议者斯文 马尔纳克 s 2
  • 如何在类型提示中定义元组或列表的大小

    有没有办法在参数的类型提示中定义元组或列表的大小 目前我正在使用这样的东西 from typing import List Optional Tuple def function name self list1 List Class1 if
  • 如何将Python包从旧版本安装到新版本?

    我正在使用 python 3 7 最近在 Linux 中安装了 python 3 8 是否有任何 bash 命令或脚本可以获取 3 7 的所有软件包列表并在 3 8 版本中一一安装 我想避免每个包裹都手工完成 注意 我将它们安装在我的系统中
  • 如何使用 python 模块的多个 git 分支?

    我想使用 git 来同时处理我正在编写的模块中的多个功能 我目前正在使用 SVN 只有一个工作区 因此我的 PYTHONPATH 上只有该工作区 我意识到这不太理想 所以我想知道是否有人可以建议一种更 正确 的方法来做到这一点 让我用一个假
  • 为数据集生成随机 JSON 结构排列

    我想生成 JSON 结构的许多不同排列作为同一数据集的表示 最好不需要对实现进行硬编码 例如 给定以下 JSON name smith occupation agent enemy humanity nemesis neo 应该产生许多不同
  • 如何创建简单的梯度下降算法

    我正在研究简单的机器学习算法 从简单的梯度下降开始 但在尝试用 python 实现它时遇到了一些麻烦 这是我试图重现的示例 我获得了有关房屋的数据 居住面积 以英尺为单位 和卧室数量 以及最终的价格 居住面积 英尺2 2104 卧室 3 价
  • 将二进制数转换为包含每个二进制数的数组

    我试图将二进制值转换为每个 1 0 的列表 但我得到默认的二进制值而不是列表 我有一个字符串 我将每个字符转换为二进制 它给了我一个列表 其中每个字符都有一个字符串 现在我试图将每个字符串拆分为值为 0 1 的整数 但我什么也得不到 if
  • 如何使 Django 自定义管理命令参数不再需要?

    我正在尝试在 django 中编写自定义管理命令 如下所示 class Command BaseCommand def add arguments self parser parser add argument delay type int

随机推荐

  • 这个承诺看起来正确吗?

    这似乎应该将数据传递到我的范围 但事实并非如此 下面的代码是否有任何直接跳出的错误 angular module Lunch services factory LunchMates q http gt LunchMates getLunch
  • 如何在 PHP 中使用 scandir 只获取图像?

    有没有办法只获取带有扩展名的图像jpeg png gif使用时等 dir tmp files1 scandir dir 您可以使用glob images glob tmp jpeg gif png GLOB BRACE 如果您需要不区分大小
  • 将 array_multisort() 与自定义函数一起使用[关闭]

    Closed 这个问题需要细节或清晰度 目前不接受答案 我有以下数组 我想根据另一个数组对其进行排序 而不是DESC or ASC array array note gt array test test1 test2 test3 test4
  • 在具有 Html 服务的站点中显示电子表格数据 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我显示 我想做的事情与此类似tutorial但我不想使用 UI 服务来显示表格 而是想使用 HTML 服务 有人从这个question提到您可以使用
  • 不使用 try except 填充字典

    假设我有字典 并且我想用一些键和值填充它 第一个字典是空的 假设我需要这个字典作为计数器 例如计算字符串中的一些键 我有这样的方法 myDic try myDic desiredKey 1 except KeyError myDic des
  • 如何让 Apache POI 和 JAXB 协同工作?

    java lang ClassNotFoundException org apache xmlbeans XmlObject 当我运行我的代码时出现该错误 好吧 没关系 我只是忘记获取 XMLBeans 但它已经退役 我在他们的档案中找不到
  • 在javascript中调用并应用[重复]

    这个问题在这里已经有答案了 可能的重复 链调用和apply在一起是什么意思 我发现了一些这样的代码 function fun return Function prototype call apply Array prototype slic
  • 选择具有所有缺失值的字符变量

    我有一个包含大约 3 000 个变量的 SAS 数据集 我想删除所有值都缺失的字符变量 我知道如何对数字变量执行此操作 我特别想知道字符变量 我需要使用基本 SAS 来完成这项工作 但这可能包括 proc SQL 这就是为什么我也将这个标记
  • perl 从日期中减去一个月

    我得到格式为 dd mm YYYY 的日期 并尝试使用 Perl 减去一个月 示例 12 07 2013 gt 12 06 2013 30 09 2013 gt 31 08 2013 我应该使用 Date Calc 吗 有任何想法吗 Tha
  • C#中如何获取CPU使用率?

    我想获取 C 中应用程序的总体 CPU 使用率 我找到了很多方法来深入了解进程的属性 但我只想要进程的 CPU 使用率 以及您在 TaskManager 中获得的总 CPU 量 我怎么做 您可以使用性能计数器班级来自系统诊断 像这样初始化
  • Haskell 中的大规模设计? [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 Locked 这个问题及其答案是locked因为这个问题是题外话 但却具有历史意义 目前不接受新的答案或互动 设计 构造大型函数式程序 尤其是在 Haskell 中 的好方法是什
  • 获取字符串列表的哈希值,无论顺序如何

    我想写一个函数GetHashCodeOfList 它返回字符串列表的哈希码 无论顺序如何 给定 2 个具有相同字符串的列表应该返回相同的哈希码 ArrayList list1 new ArrayList list1 Add String1
  • 将多个 XML 转换为 JSON 列表

    我想使用 PowerShell 脚本将具有相同 XML 属性格式的多个 XML 文件转换为 JSON 文件 这个想法是创建一个 JSON 列表 其中每个项目都是 XML 文件的 JSON 表示形式 可行吗 输入和输出的示例 Input Fi
  • 尝试在托管 bean 构造函数中访问 @EJB bean 时出现 NullPointerException

    我有一个 EJB 服务 Stateless public class SomeService 我想将其注入到 viewscoped bean 中并用它进行初始化 ManagedBean ViewScoped public class Vie
  • (ListView?)-像 Windows 资源管理器中那样进行控制

    我想知道是否有任何方法可以在插入设备时制作一个类似于 Windows 资源管理器自动启动的控件 我原以为这可能是一个或多或少经过修改的列表视图控件 但我无法通过谷歌找到任何东西 我还检查了许多 CodeProject 页面 有谁知道我在哪里
  • 将应用了主题对话框的 Activity 定位在特定的 x、y 位置

    我想将对话框放置在屏幕上的特定位置 从顶部开始 10px 从let开始 5px 我确实应用了主题并添加了android scrollX android scrollY 但似乎不起作用 有什么解决办法吗 下面是我的样式 xml
  • 在 Vue.js 中,在哪里放置代码来设置 Firebase 身份验证状态持久性?

    Overview 我正在 Quasar Vue js 和 Firebase 中构建一个需要对用户进行身份验证的 Web 应用程序 我想要实现的目标 一个非常常见的功能 即使用户关闭浏览器 选项卡后仍保持登录状态 可能的解决方案 我知道我可以
  • HTTP 错误 429:python geopy 的请求过多

    我有一个问题 我不知道如何解决 我想迭代一个文件 在其中将坐标转换为地理位置地址 代码工作正常 但在迭代文件中的一定数量的行后 就会出现问题 from future import print function from geopy geoc
  • javascript中的createElement设置“onchange”属性

    我正在尝试动态添加带有 onchange 属性的新输入字段 var f document getElementById dN fieldsd create insert new el document createElement input
  • 执行生成器表达式最Pythonic的方法是什么?

    Python 越来越多的功能变成了 惰性可执行文件 比如生成器 表达式和其他类型的迭代器 然而 有时 我发现自己想要滚动一个单行 for 循环 只是为了执行一些操作 让循环实际执行的最Pythonic的事情是什么 例如 a open num