在列表理解或生成器表达式中使用 while

2023-12-26

我可以用if and for在列表推导式/生成器表达式中为

list(i for i in range(100) if i*i < 30)

我知道这不是最有效的,但请耐心等待,因为情况可能要复杂得多,这只是一个例子。然而,这仍然会经历数百次迭代,并且只产生前 6 次中的值。有没有办法告诉生成器表达式在哪里停止,如下所示:

list(i for i in range(100) while i*i < 30)

然而,while在生成器表达式中不被理解。所以,我的问题是,如何编写带有停止条件的生成器表达式,以便它不会继续计算,即使它不会产生新值。


因为语法为takewhile() and dropwhile()不是clearest,以下是您的问题的实际示例:

>>> [i for i in itertools.takewhile(lambda x: x*x<30, range(10))]
[0, 1, 2, 3, 4, 5]
>>> [i for i in itertools.dropwhile(lambda x: x*x<30, range(10))]
[6, 7, 8, 9] 

知道itertools的作者已质疑 http://bytes.com/topic/python/answers/753516-fate-itertools-dropwhile-itertools-takewhile是否弃用这些功能。

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

在列表理解或生成器表达式中使用 while 的相关文章

随机推荐

  • 如何在 Windows 窗体应用程序中创建全局错误处理程序?

    我认为有一个组件允许创建全局错误处理 例如 当发生不好的事情时 我自己会抛出异常 例如 throw new ArgumentNullException playlist is empty 我怎样才能在全球范围内捕捉到它 您可以通过以下方式完
  • 使用 std::make_shared 抽象类实例化时出错

    我将省略相当多的代码 因为这些是一些相当大的对象 而我的问题实际上只涉及 std make shared 的操作 我在命名空间 SYNC 中有一个名为 D3D11Shader 的对象 这有一个static函数调用 SYNC D3D11Sha
  • Spring、Infinispan 和 JBoss 7 集成

    我正在尝试使用 JBoss 7 Infinispan 缓存作为两个战争部署的基于 spring 的应用程序的通信形式 稍后会详细介绍 我在访问 JBoss 托管缓存管理器时遇到问题 当我使用 DefaultCacheManager cach
  • 如何在 WordPress 上找到我的 php.ini?

    我想增加我的 WordPress 网站上的最大执行时间 我知道我应该编辑 php ini 但似乎找不到它 有小费吗 看到这个问题我真多啊 我所看到的一切都缺乏真正的答案 php ini 应该位于wp admin目录 如果不是只是创建它然后定
  • EntityManager persist() 方法不会将记录插入数据库

    我使用时遇到问题EntityManager persist Object 方法 现在 当我摆脱其他问题时 通过应用程序工作没有异常 但对象没有放入我的数据库中 我的实体类 Entity Table name Chain public cla
  • sails.js 会话 - 记住我的功能

    我一直在尝试使用来实现 Rememberme 功能sails http sailsjs org 我希望会话持续到浏览器关闭为止 但是 如果用户登录时勾选了 Rememberme 复选框 我希望会话持续 30 天 我使用了这里的记住我护照策略
  • 如何使用 JPA 在同一对象上映射父/子关系

    读完这篇文章后JPA映射关系实体parentID https stackoverflow com questions 2743895 jpa map relation entity parentid我尝试将其应用到我的代码中 但这对我不起作
  • Magento 1.9 - 产品未添加到注销用户的购物篮中

    与大多数与 Magento 相关的问题一样 通常需要用头撞墙才能找到解决方案 然而这一次 什么也没有 对于已注销并尝试将商品添加到空购物车的客户 我遇到了一个奇怪的问题 它不适用于某些特定的产品类型 我扩展了购物车控制器以添加对用户输入值的
  • 无需注册 COM 即可与 C# 互操作,可能吗?

    是否可以通过 Dotnet 互操作和 C 使用免注册 COM 如果是这样 如何在 C 项目中添加对 COM 对象的引用 我有一个免费的 ATL COM 服务器 dll 带有嵌入式清单和两个测试客户端 一个是 cpp 另一个是 c cpp 客
  • C# 如何不断向标签框添加值,以便生成的数字不断添加到其中?

    我正在开发一个骰子程序 我们应该有一个 总收入 标签框 其中显示滚子掷骰子时赚取的总金额 如果你掷出 6 你将赚取 600 美元 如果你掷出 5 你将赚取 500 美元 等等 我可以让美元值显示在标签框上 但当我继续滚动时 该数字将被下一个
  • 错误:“jQuery 未定义”

    我用 jQuery 写了一个脚本 它适用于 Firefox 和 GoogleChrome 仅使用 IE 我会返回此错误 jQuery 未定义 jquery ui 1 8 4 custom min js 第 10 行字符 1 这是我的页面的标
  • NuGet Pack - 无法从远程源检索信息

    我正在尝试运行 nuget pack project csproj 但由于项目的目录结构 A B C 项目 它一直说 NuGet Protocol Core Types FatalProtocolException 无法从远程源 A B P
  • 使用 trie 的 Python 拼写检查器

    我正在尝试使用 trie 数据结构实现拼写检查器 我目前有以下大纲Node class Node def init self self next self word marker False def add item self string
  • 将数据从一张纸复制到另一张纸的最后一行

    我正在尝试将数据从一张纸复制到另一张纸的最后一行 我这样做的原因是因为我想将数据合并到已经存在的工作表中并且我已经包含数据 下面是我到目前为止的代码 它只再次复制到另一张纸的 A2 上 为此我应该采取什么方法 Sub Upload Dim
  • 线程安全的保留/释放

    我有一个可以从多个后台线程 可能同时 访问的类 我无法复制该类 因为重新创建它的内容 处理或内存方面 可能会很昂贵 当后台处理仍在进行并访问该属性时 该类的属性也可能被替换 目前我有定期的保留 释放 但似乎情况 至少在 iOS 4 上 这些
  • UITableView - 我可以跨越多行或使用嵌套 UITableView 吗?

    我基本上正在尝试实现以下可滚动布局 并正在寻找一些关于实现它的最佳方法的建议 潜在的解决方案可能是 嵌套 UITableView 我考虑过将所有 A 组件放在父 UITableView 中的单行中 并将行 A1 A2 和 A3 放在子 UI
  • 通过传递纬度和经度打开 Apple 地图

    当用户单击链接时 我尝试在 PhoneGap 应用程序中打开 Apple 地图 Apple文档中的URL方案是这样的http maps apple com maps ll 51 83733 8 3016 如果存在 Apple 地图 则会打开
  • 如何将 dzi 文件转换为多瓦金字塔 tiff 格式

    参考答案 如何将 dzi 深度变焦 文件转换为完整图像 https stackoverflow com questions 53986084 how to convert dzi deep zoom files to full image
  • 静态函数的 DLL 导出

    我有以下静态函数 static inline HandVal StdDeck StdRules EVAL N StdDeck CardMask cards int n cards 我可以将此函数导出到 DLL 中吗 如果是这样 怎么办 Th
  • 在列表理解或生成器表达式中使用 while

    我可以用if and for在列表推导式 生成器表达式中为 list i for i in range 100 if i i lt 30 我知道这不是最有效的 但请耐心等待 因为情况可能要复杂得多 这只是一个例子 然而 这仍然会经历数百次迭