![](/img/trans.png)
[英]Structural pattern matching in Python 3.10 "NameError: name 'match' is not defined"
[英]Structural pattern matching for list of unknown length in Python 3.10
假設我有以下 function:
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
內置的 function。
if all(isinstance(i, int) for i in my_list):
# Do Something
else:
# raise Exception("...")
但是如果你真的想通過match
語句嘗試這個邏輯,你必須先捕獲元素並使用match 保護來驗證條件,但在這種情況下這是一種復雜/不可讀的解決方案。
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")
也可以看看:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.