匹配案例中的条件语句

2023-12-02

Python 中是否可以使用条件语句作为匹配语句的情况?

工作是这样的:

test = 'Aston Martin'
makes = ['Aston Martin', 'Bentley']

match test:
    case if test in makes:
        print(True)
    case _:
        print(False)

我知道 match/case 并不是在寻找具有布尔值 True 的东西,但这似乎对于缩放事物很有用。

我尝试将其作为函数来执行,以便您可以返回完全匹配的结果:

test = 'Aston Martin'
makes = ['Aston Martin', 'Bentley']

def return_bool(item, lists):
    if item in lists:
        return item
    else:
        return 'notmatching'

match test:
    case return_bool(test, makes):
        print(True)
    case _:
        print(False)

这也行不通。我认为它期待一个格式输出,比如str(x).


正如评论指出的那样,您提供的代码似乎更适合if/elif, however它可以实现,因为match支持所谓的“保护条款”。

test = 'Aston Martin'
makes = ['Aston Martin', 'Bentley']

match test:
    case test if test in makes:
        print(True)
    case _:
        print(False)

即使在以下情况下这也有效makes不是一个固定的顺序。如果makes实际上只是固定序列的替代品,那么你也可以使用

test = 'Aston Martin'

match test:
    case 'Aston Martin' | 'Bentley':
        print(True)
    case _:
        print(False)

请注意,您cannot do this

test = 'Aston Martin'
makes = ['Aston Martin', 'Bentley']

match test:
    case makes:
        print(True)
    case _:
        print(False)

因为这总是匹配第一种情况,覆盖makes with test.

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

匹配案例中的条件语句 的相关文章

随机推荐

  • 在 IntelliJ 中可以实现而在 Eclipse 中无法实现的事情?

    Locked 这个问题及其答案是locked因为这个问题是题外话 但却具有历史意义 目前不接受新的答案或互动 我听说有人改变了其中一种方式 并且对其中一种发誓 作为 Eclipse 的忠实粉丝 但还没有时间尝试 IntelliJ 我有兴趣从
  • printf,如何为整数插入小数点

    我有一个UINT16说的无符号整数 4455 312 560 or 70 如何使用 printf 在最后两位数字之前插入小数点 以便示例数字显示为 44 55 3 12 5 60 or 0 70 如果没有 printf 解决方案 是否有其他
  • 如何在下拉淘汰赛js中预先选择一个选项

    我已经查看了其他问题 但无法让我的选择框正常工作 绑定下拉 选择 列表的初始 默认值 我有以下游戏对象 function Game visitingTeamDetails homeTeamDetails game if arguments
  • 如何在android中绘制球体

    如何使用 OpenGL ES 在 Android 中绘制球体 您的问题可能与以下问题重复 在OPENGL ES中绘制球体时出现问题 在 OpenGL ES 中绘制球体 我建议您在提出问题之前先做一些研究 因为有很多教程可用于相同的内容 ht
  • 有没有办法禁用 Swing 应用程序的 Mac OS Retina 缩放?

    我们有一个相当复杂的应用程序 需要尽可能多的屏幕空间 自然 视网膜显示屏 Mac Book 非常适合此目的 然而 在 Swing 中这些设备似乎使用的是点而不是像素 它们允许我将图标更改为所讨论的更高分辨率版本here 但由于我们做了很多复
  • 如何在Python中的进程之间传递堆栈跟踪?

    我正在尝试创建一个 python 装饰器 它接受带有 args 和 kwargs 的函数 在新进程中执行它 关闭它并返回函数返回的任何内容 包括引发相同的异常 如果有 目前 如果函数没有引发异常 我的装饰器可以正常处理函数 但无法提供回溯
  • 一段时间后关闭 tkinter 窗口

    我有一段Python代码 应该打开一个新窗口一段时间 然后关闭该窗口 该窗口是通过单击按钮触发的 这是我所拥有的基础知识 def restore self self restore Toplevel message Select an av
  • 如何通过命令行删除 PostgreSQL 数据库[关闭]

    Closed 这个问题是无关 目前不接受答案 我正在尝试删除数据库并通过命令行创建一个新数据库 我使用登录psql U username然后做一个 connect template1 后面跟着一个DROP DATABASE database
  • 如何使用 PowerShell 修改 SharePoint 列表中的项目值

    如何使用 PowerShell 修改 SharePoint 列表中的项目值 当我尝试以下操作时 splist GetItems ForEach Object Write Host Item if Item eq null SPFileCol
  • 为什么动态添加的图像的offsetWidth总是0

    我正在通过 Javascript 添加图像 图像可以是任何尺寸 我想获取尺寸 宽度和高度 问题是 offsetWidth and style width始终为 0 这是一些要复制的代码 const container document ge
  • 当我重写 CreateParams 时,RichTextBox 不显示所有数据

    I foundNoBugz 编写的一些旧代码 汉斯 帕桑特 如果我理解的话 会强制 Richtextbox 使用 RTF 5 0 而不是 4 0 基本上它只是一个继承的类RichTextBox并覆盖CreateParams财产本身 priv
  • 用于多字节字符编码的 ucfirst() 函数

    我问过strtolower功能 但是当使用外来字符时 它不会将它们转换为大写 所以我必须使用 mb strtolower a utf8 但是如果我想使用我能做什么ucfirst 功能 我还没有找到任何类似的功能 可以在其中设置编码类型 没有
  • CSS 背景。将内容盒与盖子组合在一起

    如果我同时使用background origin content box 和背景大小 封面 在带有一些填充的元素上 背景图像仍然覆盖底部填充 在最新版本的 Safari Chrome Firefox 和 IE 中 div backgroun
  • 运行 LLVM 示例时遇到问题

    我在这个问题上挣扎的时间比我愿意承认的要长 并且非常感谢一些帮助 我正在尝试做一个涉及构建链接器和调度程序的项目 并且认为如果我可以使用 LLVM 中已经构建的一些功能 那就太好了 我正在使用 LLVM 10 为了开始使用 我做了一些阅读并
  • GL_DEPTH_TEST 和透明纹理的渲染故障

    从一个角度看 我的灌木看起来像这样 从另一个角度看 它们是这样的 我的理论是 当从第一个角度看灌木时 灌木后面的所有块都已经画好了 所以当绘制灌木时 它只是将它们绘制在上面 然而 从另一个角度来看 它基本上是先尝试绘制灌木 然后当 它去绘制
  • 对于无法使用 astype 进行转换的值使用 NaN

    我有一个非常大的 Pandas DataFrame 如下所示 gt gt gt d pd DataFrame a 1 U 3 4 gt gt gt d a 0 1 1 U 2 3 4 目前该列设置为object gt gt gt d dty
  • XQuery 和节点 ID

    我有这个变量 declare xmlDoc XML 它存储了以下 xml
  • `class HelloWorld : public Gtk::Window` 是什么意思?

    我正在按照 Gtk Hello World 教程找到here 我在类声明中遇到了一行我以前从未见过的行 我现在才学习编程几个月 我想知道是否有人可以向我解释一下 该线是 class HelloWorld public Gtk Window
  • 批处理文件根据名称将文件夹放入其他文件夹中

    有人提出了与此非常相似的问题 自动将文件放入文件夹中 但是我正在努力转换上述问题的答案以满足我的需要 我的问题是 我需要使用文件夹名称的一部分将文件夹移动到其他文件夹中 之前回答的问题是关于移动文件的 我的文件夹上有日期和时间戳2016 0
  • 匹配案例中的条件语句

    Python 中是否可以使用条件语句作为匹配语句的情况 工作是这样的 test Aston Martin makes Aston Martin Bentley match test case if test in makes print T