python - 数组返回值匹配
我想用一种类似函数的方式来匹配,获取数组的前两个元素,然后返回剩下的部分。
比如,假设有一个函数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和一些函数式编程语言可以很优雅地处理列表分解!
4 个回答
2
对于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)
但我不确定有没有像Ayman在Python 3中的建议那样的方法。
3
在Python 2中,你的问题其实已经有很接近的答案了:
a, b, more = (seq[0], seq[1], seq[2:])
或者:
(a, b), more = (seq[0:2], seq[2:])
6