python-数组返回值匹配
我想做一个类似函数的模式匹配来获得前两个元素,然后是数组的其余部分返回值 例如,假设perms(x)返回一个值列表,我想这样做:python-数组返回值匹配,python,list,Python,List,我想做一个类似函数的模式匹配来获得前两个元素,然后是数组的其余部分返回值 例如,假设perms(x)返回一个值列表,我想这样做: seq=perms(x) a = seq[0] b = seq[1] rest = seq[2:] 当然,我可以缩短为: [a,b] = seq[0:2] rest = seq[2:] 我可以用一些符号来做这个吗 [a,b,more] = perms(x) 或在概念上: [a,b,more..] = perms(x) PROLOG和函数式语言可以像这样很好地
seq=perms(x)
a = seq[0]
b = seq[1]
rest = seq[2:]
当然,我可以缩短为:
[a,b] = seq[0:2]
rest = seq[2:]
我可以用一些符号来做这个吗
[a,b,more] = perms(x)
或在概念上:
[a,b,more..] = perms(x)
PROLOG和函数式语言可以像这样很好地进行列表分解 您可以在Python 3中这样做:
(a, b, *rest) = seq
有关更多详细信息,请参阅。对于Python 2,我知道您可以使用以下函数来完成:
>>> def getValues(a, b, *more):
return a, b, more
>>> seq = [1,2,3,4,5]
>>> a, b, more = getValues(*seq)
>>> a
1
>>> b
2
>>> more
(3, 4, 5)
但不确定是否有任何类似python 2中的方法,您的问题已经非常接近答案:
a, b, more = (seq[0], seq[1], seq[2:])
或:
非常好,谢谢
在战斗手端解析数组的建议对我来说不太合适,因为我实际上想对生成器表达式的返回进行模式匹配
对于烫发中的(a、b、更多):
我喜欢P3解决方案,但必须等待Komodo支持它 稍微短一点:a,b,m=(lambda,b,*more:(a,b,more))(*seq)这是python-2.x的方法
(a, b), more = (seq[0:2], seq[2:])