python-3.x - 如何对包含浮点值的匹配列表进行模式匹配?
问题描述
我有一个包含 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]
我想True
为4_element_match_list=[0.4, 0.3, 0.2, 0.1]
和False
其他列表(例如4_element_mismatch_list=[0.1, 0.2, 0.3, 0.4]
.
我怎样才能做到这一点?
解决方案
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
编辑:新版本
推荐阅读
- discord - Python Discord Bot - 仅限制 1 次聊天的命令
- python - 通过使用 np.einsum 将 2D 数组的行广播到 3D 数组的每个切片来进行乘法
- java - 包 javax.xml.namespace 可以从多个模块访问:
, eclipse webservice中的java.xml - flutter - 如何在 Flutter/Dart 中处理键盘动作或在键盘 TextInputAction 中添加功能?
- python - AttributeError:“dict”对象没有属性“imdata”
- javascript - 通过 myFunction 使文本出现
- c++ - 我在 Codelite 中清理项目时出现错误
- docker - How to attach to a docker-compose container?
- image-processing - 显示图像中的红-绿和蓝-黄对立颜色通道
- sql-server - 按不同年份获得前 5 名 MDX