让我们假设我有以下函数:
def sum_ints(my_list: list[int]) -> int:
return sum(my_list)
在开始添加my_list
中的元素之前,我想使用新的match
语句检查所有元素的类型。
例如,如果my_list
的长度为2,我可以执行:
def sum_ints(my_list: list[int]) -> int:
match my_list:
case [int(), int()]:
return sum(my_list)
case _:
raise Exception("...")
如何将列表的大小写与n
元素相匹配?
我认为在您的情况下,您只需要all
内置函数。
if all(isinstance(i, int) for i in my_list):
# Do Something
else:
# raise Exception("...")
但是,如果真的想通过match
语句尝试这种逻辑,则必须首先捕获元素,并使用match-guard来验证条件,但在这种情况下,这是一种复杂/不可读的解决方案。
a = [1, 2]
match a:
case [*elements] if all(isinstance(i, int) for i in elements):
print("All elements are int")
case _:
raise Exception("Elements are not int")
另请参阅:
- Python 3.10模式匹配(PEP 634(-字符串中的通配符