有额外的 while 循环条件...基于条件吗?

2023-11-26

变量a可以取任意数量的值。的价值a是 while 循环的额外预定义条件的数量。

这可以通过多个来完成elif陈述,但有没有更干净的方法来做到这一点?

if a == 0:
    while condition_1:
        ...
elif a == 1:
    while condition_1 or condition_2:
        ...
elif a == 2:
    while condition_1 or condition_2 or condition_3:
        ...

执行其他语言所做的一般方法switch语句是创建一个包含每个案例的函数的字典:

conds = {
    0: lambda: condition_1,
    1: lambda: condition_1 or condition_2,
    2: lambda: condition_1 or condition_2 or condition_3
}

Then:

while conds[a]():
    # do stuff

通过使用 lambda(或命名函数,如果您的条件特别复杂),可以在每次循环中评估适当的条件,而不是在定义字典时评估一次。

在这个简单的例子中,你的a具有从 0 开始的连续整数值,您可以使用列表并节省一些输入。为了进一步简化,您可以根据前一个条件来定义每个条件,因为您每次只是添加一个条件:

conds = [
     lambda: condition_1,
     lambda: conds[0]() or condition_2,
     lambda: conds[1]() or condition_3
]

或者,正如 Julien 在评论中建议的那样:

conds = [
     lambda: condition_1,
     lambda: condition_2,
     lambda: condition_3
]

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

有额外的 while 循环条件...基于条件吗? 的相关文章

  • 安装 Pillow 和 PIL

    I have Ubuntu 12 04 http en wikipedia org wiki List of Ubuntu releases Ubuntu 12 04 LTS 28Precise Pangolin 29 Precise Pa
  • Pandas groupby:根据另一列中的值更改一列中的值

    我会尽力解释我的问题 但我是 Pandas 新手 所以请耐心等待 我有一个 Pandas 数据框df Random ID Seq ID Type Seq Token 0 8 1 User First 1 8 2 Agent Second 2
  • 意外的缩进错误,但缩进看起来正确

    我一直在尝试运行此代码 但它引发了缩进错误 无论我尝试什么 结果都是一样的 如果我删除之前的缩进def str self 和代码的其余部分 它工作正常 但在输出时 它不显示问题 而是显示 问题对象 def str self Indentat
  • 加快 pandas groupby 中的滚动总和计算

    我想按组计算大量组的滚动总和 但我很难快速地完成它 Pandas 内置了滚动和展开计算器的方法 这是一个例子 import pandas as pd import numpy as np obs per g 20 g 10000 obs g
  • Flask / Werkzeug - 套接字卡在 CLOSE_WAIT 中

    我遇到过一种情况 API 构建于Flask 宁静 https github com flask restful flask restful间歇性变得无反应 目前它从 Werkzeug 运行 我知道它仅用于非生产用途 并且是单线程的 让事情变
  • 如何在pytorch中动态索引张量?

    例如 我有一个张量 tensor torch rand 12 512 768 我得到了一个索引列表 说它是 0 2 3 400 5 32 7 8 321 107 100 511 我希望从给定索引列表的维度 2 上的 512 个元素中选择 1
  • 为什么del是Python中的指令而不是方法? [复制]

    这个问题在这里已经有答案了 为什么Python的创建者更喜欢这种语法 指令 del list index 超过这个 方法 list del index 在我看来 这del属于同一 类别 append remove find ETC 因此应该
  • “unicode”对象没有属性“_meta”

    我正在尝试创建一个视图 用户在其中从下拉菜单中选择一个选项 提交它 然后返回一些数据 具体来说 他们将从数据库中的模型中进行选择 并返回该类的所有实例 我使用 django tables2 输出数据 以便可以排序 但这是我的症结所在 Vie
  • Panda如何将行分组到不同的时间桶中?

    我有一个带有名为时间戳的日期时间类型列的数据帧 我想根据时间部分的时间戳将数据帧拆分为多个数据帧 每个数据帧包含按其值模 x 分钟进行值的行 其中 x 是变量 请注意e and f不按原来的顺序 以 10 分钟为模 我希望所有时间都以3在一
  • 按自定义年度频率重新采样

    我知道我可以使用 AS JUL 从 7 月 1 日开始每年重新采样 但在不同的日期之前我该如何做 In 11 df Out 11 value date 2005 07 02 4 2005 09 20 7 2005 11 12 4 2005
  • rpy2 传递 python 保留关键字参数

    我试图通过 python 使用 r 的密度函数 并且必须将 from to 参数传递给密度函数 然而 由于 from 这个词是Python中的保留关键字 我该如何实现这一点呢 谢谢 这是到目前为止的代码 r density robjects
  • 动态组装 Python 模块,动态导入

    我正在努力让自己熟悉importlib钩子 我想实现直接导入用其他语言编写的非Python文件并维护源映射的能力 因此提高SyntaxError带有行号的 s 仍然会给出有意义的堆栈跟踪 我加载外部文件的方法是组装 Pythonic 源代码
  • 使用 Python 访问 MP3 音乐数据

    我正在尝试编写一个 Python 脚本 用于使用歌曲的数据作为比较的基础来搜索重复的 mp3 4 文件 我的情况涉及许多文件名相似但 ID3 标签不同的 mp3 4 文件 起初 我尝试循环并使用 md5 来查找重复文件 忽略文件名 当然 当
  • 如何将字符串转换为二进制?

    我需要一种方法来获取 python 中字符串的二进制表示形式 例如 st hello world toBinary st 是否有一个模块可以以某种巧妙的方式执行此操作 像这样的东西吗 gt gt gt st hello world gt g
  • 保持 WebSocket 连接处于活动状态

    我正在研究 WebSocket 协议 并尝试在后端使用 Python 实现一个简单的 ECHO 服务 它似乎工作正常 但连接建立后立即断开 这是我的客户
  • SyntaxError:创建类实例时语法无效[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我在 Python shell 3 3 2 中运行这段代码 但它给了我SyntaxError invalid syntax cla
  • python - 从完整地址获取邮政编码

    我有一个数据框 其中一列中有完整地址 我需要创建一个仅包含邮政编码的单独列 有些地址只有五位数字的邮政编码 而其他地址则有额外的四位数字 如何拆分列以获取邮政编码 示例数据 d name bob john address 123 6th S
  • Discord-py Rewrite - Cog 中的基本 aiohttp Web 服务器

    我正在尝试将基本的 aiohttp 网络服务器集成到 Cog 中 使用 discord py 重写 我对齿轮使用以下代码 from aiohttp import web import discord from discord ext imp
  • 为文件中的每个单词创建字典并计算其后面的单词的频率

    我正在尝试解决一个难题 却迷失了方向 这就是我应该做的 INPUT file OUTPUT dictionary Return a dictionary whose keys are all the words in the file br
  • Bokeh 中的相关图问题

    当我通过绘制数据时rect 来自 Bokeh 我在可视化中得到了一条由水平块组成的单行 数据打印正确 据我所知格式正确 type 验证它们都是列表 谁能诊断这个吗 如果问题不在这里 那么我可以附加更多代码 如果需要 在 Ubuntu 14

随机推荐

  • 如何使用 ssh 使用 Nodegit 克隆 git 存储库

    我正在尝试使用库nodegit 版本0 2 4 和ssh从我们的teamforge服务器在node js中克隆git存储库 我们的服务器请求用户进行身份验证 当我尝试仅使用克隆方法而不传递选项时 我收到错误 回调无法初始化 SSH 凭据 我
  • ASP.Net WebAPI OWIN:为什么 Request.GetOwinContext() 返回 null?

    在我的生产代码中 我们遇到了 Request GetOwinContext 始终返回 null 的问题 我设置了一个小型测试 WebAPI 控制器来尝试隔离问题 public class TestController ApiControll
  • 如何正确使用 SET XACT_ABORT ON

    我们最近被空降到一个新的 ETL 项目 该项目的代码非常糟糕 我手中有一个包含 700 行和各种更新的查询 我想用它来调试它SET XACT ABORT ON 目标是如果只有一个事务失败则回滚所有事务 但我找到了几种将其存档在 StackO
  • 为什么 scala 函数限制为 22 个参数?

    并不是说我实际上已经接近这个极限 但我一直想知道 为什么他们停在Function22 Tuple22 JVM 限制 任意选择 函数和元组被编译器重写为对象 并且仅Function0通过Function22 and Tuple0通过Tuple
  • Jinja2 按月/年分组

    我正在尝试按月 年对 Jinja 的日期 时间列表进行分组 这是我现在的代码 for group in EventsList groupby date b group grouper b br for event in group list
  • if 和 if 不为 None 之间的区别

    在编写一些 XML 解析代码时 我收到了警告 FutureWarning The behavior of this method will change in future versions Use specific len elem or
  • .NET 中 UTC 和 GMT 标准时间的差异

    在 NET 中 以下语句返回不同的值 Response Write TimeZoneInfo ConvertTime DateTime Parse 2010 07 01 5 30 00 000 TimeZoneInfo FindSystem
  • 使用对象的 n 个克隆创建 java 集合

    在Java中 是否有一种单行方法来创建一个初始化的集合n对象的克隆 我想要这样的等价物 foo vector
  • 检查字符串是否包含数组中的值[重复]

    这个问题在这里已经有答案了 我正在尝试检测一个字符串是否至少包含一个存储在数组中的 URL 这是我的数组 owned urls array website1 com website2 com website3 com 该字符串由用户输入并通
  • 如何使用bind_rows()并忽略列名[重复]

    这个问题在这里已经有答案了 这个问题以前可能已经回答过 但我似乎找不到答案 你怎么用bind rows 只是union两个表并忽略列名 有关的文档bind rows 有以下示例 Columns don t need to match whe
  • 如何在用 [ApiController] 装饰的控制器中对模型验证进行单元测试?

    正如指出的这个答案 to Asp Net Core 2 1 ApiController 在单元测试下不会自动验证模型 ASP NET Core 2 1 的 ApiControllerAttribute 为我们提供的自动 ModelState
  • 在 xcode 6.1 中,界面生成器删除 ui 元素

    我有一个包含一些表格视图和一些集合视图以及一些按钮和标签的视图 我不确定这是否是 Xcode 6 1 的新功能 因为我已经有一段时间没有从事该项目的 ui 方面的工作了 但是 当我尝试调整视图中的任何内容时 我的表视图和集合视图 以及可能还
  • Syntastic for Vim:~/.vimrc 中需要哪些行? (PHP错误检查)

    我发现这些文件令人沮丧 我需要添加到配置文件中才能使其正常工作的基本行是什么 从技术上来说 没什么 如果您已将 Syntastic 提取到您的 vim目录 尝试使用 SyntasticEnableVim 中的命令为当前打开文件的文件类型启用
  • 带有代码签名 .exe 文件的 Windows 10 SmartScreen

    我创建了一个 setup exe 文件并将其加载到我的网站上以供下载 exe 文件已使用 godaddy 的证书进行了代码签名 当使用 win7 从我的网站下载 exe 文件时 它会检测到证书并将其显示为安全下载 在 win10 上 exe
  • 使用 matplotlib 具有不同顺序颜色的堆叠条形图

    我是Python的初学者 我正在尝试制作具有不同顺序颜色的水平条形图 我有一个如下所示的数据集 dataset A 19 B 39 C 61 D 70 A 34 B 68 C 32 D 38 A 35 B 45 C 66 D 50 A 23
  • 与普通指针相比,按值传递“unique_ptr”是否会降低性能?

    普遍的智慧是std unique ptr不会带来性能损失 不使用删除器参数时不会造成内存损失 但我最近偶然发现了一个讨论 表明它实际上引入了一个额外的间接 因为unique ptr无法在具有 Itanium ABI 的平台上的寄存器中传递
  • Google 登录失败(ApiException:8)

    当我尝试通过 google 登录时 出现此异常 2020 11 12 13 32 51 571 7351 7351 com test app W aaab com google android gms common api ApiExcep
  • 如何打印浮点数的每一位?

    我正在尝试在 C 中打印出浮点数的每一位 我可以用这个来处理整数 int bit return int a int loc Bit returned at location int buf a 1 lt
  • 在 Ubuntu 14.04 上升级 Cabal

    当我通过安装 Haskell GHC cabal 时sudo apt get我安装了 cabal 版本 1 16 这显然不是最新版本 我该如何升级到至少 1 18 版本 我尝试做sudo apt get update and sudo ap
  • 有额外的 while 循环条件...基于条件吗?

    变量a可以取任意数量的值 的价值a是 while 循环的额外预定义条件的数量 这可以通过多个来完成elif陈述 但有没有更干净的方法来做到这一点 if a 0 while condition 1 elif a 1 while conditi