检查 iterable 的所有值是否为零

2024-04-18

有没有一种好的、简洁/内置的方法来查看可迭代中的所有值是否为零?现在我正在使用all()有一点列表理解,但是(对我来说)似乎应该有一种更具表现力的方法。我认为这在某种程度上相当于memcmp() in C.

values = (0, 0, 0, 0, 0)
# Test if all items in values tuple are zero
if all([ v == 0 for v in values ]) :
    print 'indeed they are'

我希望有一个内置函数可以执行以下操作:

def allcmp(iter, value) :
    for item in iter :
        if item != value :
            return False
    return True

python 中是否存在该函数而我只是盲目的,或者我应该坚持使用原始版本?

Update

我并不是建议这样做allcmp()是解决方案。这是我的一个例子think可能更有意义。这不是我建议新的 Python 内置函数的地方。

在我看来,all()是不是很有意义。它没有表达“全部”正在检查的内容。你可以假设all()接受一个可迭代对象,但它并没有表达该函数正在寻找什么(一个可迭代对象bool测试所有这些True)。我要求的是一些函数像 my allcmp()它需要两个参数:一个可迭代的值和一个比较值。我问是否有一个内置函数可以完成与我编写的类似的操作allcmp().

我打电话给我的allcmp()因为我的 C 背景和memcmp(), 我编写的函数的名称无关紧要 here.


在这种情况下使用生成器而不是列表:

all(v == 0 for v in values)

Edit:

all是标准 Python 内置的。如果你想成为高效的 Python 程序员,你应该知道其中一半以上(http://docs.python.org/library/functions.html http://docs.python.org/library/functions.html)。争论说alltrue比这个名字更好all就像争论 Cwhile应该打电话whiletrue。是主观的,但我认为大多数人更喜欢内置函数的较短名称。这是因为无论如何你都应该知道它们是做什么的,而且你必须经常输入它们。

使用生成器比使用 numpy 更好,因为生成器具有更优雅的语法。 numpy 可能更快,但只有在极少数情况下您才会受益(像 shown 这样的生成器速度很快,只有当该代码是程序中的瓶颈时您才会受益)。

您可能无法期望 Python 提供更多描述性内容。

附言。如果您以 memcpm 风格执行此操作,则这里是代码(我更喜欢所有版本,但也许您会喜欢这个):

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

检查 iterable 的所有值是否为零 的相关文章

随机推荐

  • 在 Python 中为现有 PDF 创建大纲/目录

    我正在使用 pyPdf 将多个 PDF 文件合并为一个 这很好用 但我还需要向生成的 PDF 文件添加目录 大纲 书签 pyPdf 似乎只支持读取大纲 Reportlab 允许我创建它们 但开源版本不支持加载 PDF 文件 因此无法向现有文
  • 一个本地 .resx 字符串可以引用另一个本地 .resx 字符串吗?

    我正在尝试确定是否可以将串联字符串添加到我的本地 resx 文件之一 这个例子应该澄清 假设我有一个简单的 ASP NET 网页 由 1 一个标签 其文本是重要关键字 2 一个带有必填字段验证的输入和 3 一个导致验证发生的按钮组成 lbl
  • JodaTime中如何获取本机的时区?

    如何检测本地计算机所在的时区 I tried DateTimeZone getDefault 但如果机器位于德国 那么这不会给我例如时区 德国 有可能吗 DateTimeZone getDefault 如果您的主机位于德国 将返回您的时区
  • 没有 jpa 的 Spring 和 Hibernate

    对于我的新项目 我计划使用 Hibernate 5 和 Spring 4 并且一如既往地喜欢分成不同的层 项目 梯度依赖 org springframework spring webmvc 4 2 1 RELEASE org springf
  • 获取.NET程序集的日期[重复]

    这个问题在这里已经有答案了 如何从当前 NET 程序集中检索创建日期 我想添加一些非常简单的功能 让我的应用程序在主程序集构建日期一周后停止工作 我已经编写了在给定日期后杀死我的应用程序的代码 我只需要以编程方式从程序集中检索创建日期 以下
  • 分析 mex 函数

    我刚刚用 c 将 Matlab 程序重写为 mex 函数以加快速度 并取得了出色的结果 这个优化决策是一个非常非常好的主意 无需线程即可将速度提高 20 倍 它仍然让我很好奇 mex 函数将时间花在什么上 并希望找出可能的瓶颈 我正在寻找一
  • 创建自定义表格表示的函数

    我使用下面的代码来概述我的部分数据 从以下代码中创建函数的最佳方法是什么 它将采用 dataList 以及一些图形选项 例如颜色 作为参数 并返回自定义的表格表示形式 如下所示 overviewtheData Text Grid Map R
  • Symfony 2 FOS 用户捆绑包 Bootstrap 模式 AJAX 登录

    有没有人已经使用 Symfony 2 和 FOS User Bundle 在 Bootstrap 模式中构建了登录表单 这是我现在所拥有的 src Webibli UserBundle Resources config service ym
  • 使用 PHP 生成 Windows .lnk 文件

    我正在开发一个项目 其中涉及运行 ProFTPd 的 FTP 服务器和为用户创建帐户的 PHP MySQL 后端 创建帐户后 系统会向用户发送电子邮件 其中包含其帐户详细信息以及下载 FileZilla 或 Cyber Duck 的说明 具
  • Publish 不是改造 web.config 吗?

    我制造了一个web config 完整文件 http pastebin com rYreaVyP 它不显示 XML 错误
  • 如何从 HttpInputStream 获取 docx 文件的字节数组?

    我正在使用这篇文章第一个答案中的方法 如何从 HttpPostedFile 创建字节数组 https stackoverflow com questions 359894 how to create byte array from http
  • 如何写入 stdIn (JAVA) [重复]

    这个问题在这里已经有答案了 我想通过使用一些输入 例如 join 8 对我的 P2P 系统进行一些测试 8 是节点号 对于我的系统 命令 join 8 是从标准输入读取的 但我不想将其键入数百次以进行数百次测试 因此我编写了一个测试函数来随
  • HTML5 视频 - 在特定时间开始视频并播放 x 时间

    我正在尝试创建在特定时间点启动本地视频并播放特定持续时间的按钮 我已经让它在某个时刻播放 但不知道如何让它只播放一定的持续时间 这是代码 HTML
  • C++ 中的叉积

    给定以下Python 来自http norvig com sudoku html http norvig com sudoku html def cross A B Cross product of elements in A and el
  • 使用 Terraform(工作区、模块?)配置客户帐户最佳实践?

    我需要在 AWS 中创建和管理多个客户环境 并且希望利用 Terraform 来部署所有必要的资源 每个客户环境基本相同 只是用于访问其中一台服务器的 URL 不同 我已经整理了一个 Terraform 配置 可以为给定客户部署所有资源 但
  • 来自本地运行的 docker 容器内的 Azure 托管身份

    我正在运行一个由 asp net core 2 2 api 组成的 docker 容器 此 api 需要访问 Azure 密钥保管库 并且我已使用在密钥保管库上具有正确访问策略的用户登录 Visual Studio 以检索机密 但是 当我使
  • 为什么 JDBC 是动态加载而不是导入? [复制]

    这个问题在这里已经有答案了 在 JDBC 中 我只看到使用的示例 Class forName com mysql jdbc Driver true cl 还没有看到有人使用 import com mysql jdbc Driver 是不是因
  • 从 MySQL 数据库中选择随机问题; “正确答案”搞砸了

    我正在使用 PHP 和 MYSQL 构建一个简单的测验程序 测验旨在一次显示一个问题 问题为多项选择题 每个问题有 4 个可能的答案 如果玩家选择正确 他将进入下一个问题 如果他选错了 测验就会结束 首先 我设计的测验如下 1 创建一个数据
  • 如何使用 Spring 表达式语言将不带构造函数的对象添加到列表中

    我想添加一个BigDecimal使用 Spring 表达式语言的列表 public class SpelTest public List
  • 检查 iterable 的所有值是否为零

    有没有一种好的 简洁 内置的方法来查看可迭代中的所有值是否为零 现在我正在使用all 有一点列表理解 但是 对我来说 似乎应该有一种更具表现力的方法 我认为这在某种程度上相当于memcmp in C values 0 0 0 0 0 Tes