小编tjf*_*801的帖子

有没有办法使用 python 的“match”语句来测试 Iterable 是否包含模式?

这与新的 Python 3.10 beta 和新语法有关match。有没有什么方法可以检查模式是否简单地包含在可迭代中?最明显的解决方案是简单地在两侧放置两个通配符,但这会SyntaxError由于来自可迭代解包的解包语法而引发。

有没有可能的方法来做到这一点?注意:在示例中使用包装类之类的东西numbers 就可以了,只要它可以使用匹配块并且至少具有一定的可读性,但我已经尝试过这一点,但没有取得太大成功

例子:

numbers = [1, 2, 3, 5, 7, 8, 9] #does not have to be a list, could be a class if needed

match numbers:
    # this just raises a SyntaxError, but I need a way to do something equivalent to this
    case [*_, (5 | 6), *_]:
        print("match!")
Run Code Online (Sandbox Code Playgroud)

python iterable iterable-unpacking python-3.10 structural-pattern-matching

7
推荐指数
1
解决办法
1068
查看次数