首页 > 解决方案 > 如何对包含浮点值的匹配列表进行模式匹配?

问题描述

我有一个包含 1 个小数点精度的浮点值的列表,例如3_element_list = [4.3, 2.2, 8,9]。使用一个函数def check_pattern(list: List[float], pattern: List[float]) -> bool:,我想检查列表是否与预定义的模式匹配,该模式pattern反映哪个列表元素应该最大,取决于列表元素计数。

Wrt3_element_list 3表示最大,1表示最小。表示给定3_element_match_pattern = [2, 1, 3]函数应该返回True的模式,以防模式是3_element_mismatch_pattern = [3, 2, 1]函数应该返回的False

反过来,4_element_pattern=[4, 3, 2, 1]我想True4_element_match_list=[0.4, 0.3, 0.2, 0.1]False其他列表(例如4_element_mismatch_list=[0.1, 0.2, 0.3, 0.4].

我怎样才能做到这一点?

标签: python-3.xlist

解决方案


three_element_list = [4.3, 2.2, 8.9]
three_element_match_pattern = [2, 1, 3]
three_element_mismatch_pattern = [3, 2, 1]

four_element_match_list=[0.4, 0.3, 0.2, 0.1]
four_element_mismatch_list=[0.1, 0.2, 0.3, 0.4]
four_element_pattern=[4, 3, 2, 1]

six_element_list = [3.222, 3.644, 2.0, 4.756, 4.644, 2.222]
six_element_match_pattern = [3, 4, 1, 6, 5, 2]


def check(lst, pattern):
    s = sorted(lst)
    return all(s[v-1] == val for v, val in zip(pattern, lst))

print(check(six_element_list, six_element_match_pattern))

print(check(three_element_list, three_element_match_pattern))
print(check(three_element_list, three_element_mismatch_pattern))
print(check(four_element_match_list, four_element_pattern))
print(check(four_element_mismatch_list, four_element_pattern))

印刷:

True
True
False
True
False

编辑:新版本


推荐阅读