当元组中的输出参数数量未知时,忽略多个输出

时间:2017-06-09 18:19:54

标签: python tuples

我有一个函数,它返回一个2或3个值的元组(取决于矩阵的大小)。我只需要前两个,并丢弃第三个值,以防万一 是否有单行解决方案?

请注意(在将此问题标记为重复之前),这些解决方案不起作用:

(1)

(x,y, _) = myfunc() # Won't work since myfunc() may return only two values

(2)

out = myfunc()     # This solution is not one-line
x = out[0]
y = out[1]

3 个答案:

答案 0 :(得分:7)

您可以对函数的输出进行切片以仅检索前两项:

x, y = myfunc()[:2]

或者在Python 3中使用扩展解包,它还将处理生成器函数和函数返回迭代器生成器表达式不能直接应用前一个切片表示法:

x, y, *_ = myfunc()

答案 1 :(得分:4)

这应该可以解决问题

x, y = myfunc()[:2]

答案 2 :(得分:3)

在Python 3中,您可以使用 catch-all 前缀*

a, b, *rest = myfunc()

(或者如果您不需要其余的话,请使用一次性占位符变量_代替rest