gpt4 book ai didi

python - 是否有与 Erlang 的模式匹配等效的 Python?

转载 作者:太空宇宙 更新时间:2023-11-04 09:07:21 26 4
gpt4 key购买 nike

如果我有一个包含五件事的 list ,而我只对其中的第三和第五感兴趣,我会在 Erlang 中这样做:

[_First, _Second, Third, _Fourth, Fifth] = ListOfFiveElements,

下划线意味着我不关心这些变量,最终结果是 Third 和 Fifth 绑定(bind)到该列表中第三和第五位的内容。如何在 Python 中最好地完成同样的工作?

最佳答案

您可以使用 Tuple 解包,惯例是您可以对您不关心的事情使用 _:

>>> ListOf5=['one','two','three','four','five']
>>> _,_,Third,_,Fifth=ListOf5
>>> Third, Fifth
('three', 'five')

这适用于 Python 中的任何序列,只要总数正确:

>>> _,_,Third,_,Fifth=[c for c in 'abcde']
>>> Third, Fifth
('c', 'e')

您还可以构造 RH 元组来匹配分配的 LH 端的元素:

>>> Third,Fifth=ListOf5[2],ListOf5[4]
>>> Third,Fifth
('three', 'five')

并且 - 等等 - 在 Python 3 中,您可以执行 First、Second、All The Rest 类型的元组赋值:

>>> s1,s2,*s3='abcdefg'
>>> s1,s2,s3
('a', 'b', ['c', 'd', 'e', 'f', 'g'])
>>> s1,*s2,s3='abcdefg'
>>> s1,s2,s3
('a', ['b', 'c', 'd', 'e', 'f'], 'g')

关于python - 是否有与 Erlang 的模式匹配等效的 Python?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19084753/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com