从函数中访问对象和元组

时间:2016-07-01 06:43:02

标签: python numpy

我觉得应该有一种非常简单的方法来从评估函数中访问特定元素。我想要实现的一个非常简单的例子是

def func(x):
    a = 2*x
    b = x*x
    return 1, 10, 100, (a,b)

我为x定义一个值,函数返回一组值和一个元组。我想检索(例如)第一个元素和元组。代码如

hello, cello = func(2)[[0,3]]

返回错误。但是,我可以单独访问这些元素,

bello = func(2)[3]

例如。

我正在使用的功能需要一段时间才能进行评估,因此使其运行两次并不是一个理想的选择。此外,如果可能的话,我不想为元组的每个单独元素创建一堆变量(包含很多)。

本质上,我想要一个符合以下方面的解决方案:

hello, cello = func(2)[[0,3]]

其中,

hello = 1
cello = (4,4)

谢谢

3 个答案:

答案 0 :(得分:3)

所以你可以解包并忽略:

hello, _, _, cello = func(2)

但如果结果更复杂,您可以使用operator.itemgetter

from operator import itemgetter
hello, cello, bello = itemgetter(0, 3, 15)(func(2))

或者更详细地说:

my_results = itemgetter(0, 3, 15)
hello, cello, bello = my_results(func(2))

答案 1 :(得分:0)

尝试

hello, cello = [func(2)[i] for i in [0,3]]

答案 2 :(得分:0)

标准解决方案是将返回值打包到字典中并使用它来分隔结果。

通过这种方式,您可以节省_的计数,并且代码更具可读性

return {iteration:iter,Result:res ....}

尔格= FUNC(....)

并使用

尔格[迭代]

稍后。