簡體   English   中英

Python 3.10 中未知長度列表的結構模式匹配

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM