有没有办法使用匹配项检查列表的输入?

Is there a way to check inputs against lists using matches?

提问人:Jacob B 提问时间:4/26/2023 更新时间:4/27/2023 访问量:42

问:

我需要一种方法来针对单个输入/变量(最好是匹配项)测试单个多个列表项,并根据与该输入/变量匹配的列表项执行不同的功能。

目前我正在使用:

match I:

 case List[0]:
  input 1

 case List[1]:
  input 2

但它不断返回一个不能包含内置可变序列的错误,这就是我从大量 if - elif 函数切换的原因。case

python 列表 输入 匹配

评论

2赞 Michael Butscher 4/26/2023
您可以使用列表的方法来查找给定值的索引,然后例如在 s 中使用此索引。indexcase
0赞 Daniel Hao 4/26/2023
你的清单有多大?如果它是一个大的,那么使用就没有意义了。为什么不能只使用输入值match
0赞 Karl Knechtel 4/27/2023
“这就是我从大量 if - elif 函数切换的原因。” - 我无法理解其中的推理(撇开错误的术语)。不会有和//一样多的s吗?caseifelifelse

答:

0赞 Pawel 4/26/2023 #1

您可以稍微更改索引的匹配顺序。例如:

x = 'a'
l = ['a', 'b', 'c']
match l.index(x):
   case 0:
      print("input 1")
   case 1:
      print("input 1")
   case 2:
      print("input 1")      

使用这种方法,您的列表可能具有动态内容。

0赞 Jacob B 4/27/2023 #2

我没有将列表对象的索引与输入进行比较,而是直接将输入与列表中的每个对象进行比较,因为运行时不需要修改列表。

match x:

case option1:
 print("option 1")

case option2:
 print("option 2")