【发布时间】:2022-01-24 03:11:33
【问题描述】:
我使用 Python 已经有一段时间了,我想要实现的目标应该是相同的,但我遇到了一个讨厌的错误。
我的问题是我希望将 ML 中的元组列表拆分为单独的变量。
val myList = [(1,2),(3,4)];
val (x :: y) = myList;
在上述语句中,x 将是 (1,2),y 将是 (3,4),... [如果还有的话]。很简单。
现在我想引入第三个变量 z,其中 z 为 (3,4),... 而 x, y 分别为 (1,2)。
val myList = [(1,2),(3,4)];
val ((x :: y) :: z) = myList;
前面sn-p产生的错误是:
error: Pattern and expression have incompatible types.
Pattern: ((x :: y) :: z) : 'a list list
Expression: myList : (int * int) list
Reason: Can't unify 'a list to int * int (Incompatible types)
编辑:根据要求,这是 z 应该实现的目标。
val myList = [(1,2),(3,4)];
val ((x :: y) :: z) = myList;
输出将是: x = 1, y = 2, z = (3,4)
在 Python 中,这将是:
Python 3.9.6 | packaged by conda-forge | (default, Jul 11 2021,
03:35:11)
[Clang 11.1.0 ] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> (x,y),z = [(1,2),(3,4)]
>>> x
1
>>> y
2
>>> z
(3, 4)
【问题讨论】:
-
你能解释一下这个
Now I want to introduce a third variable z where z would be (3,4),... and x, y would be (1,2) respectfully.吗? -
肯定会在一分钟内检查编辑。