我觉得应该有一种非常简单的方法来从评估函数中访问特定元素。我想要实现的一个非常简单的例子是
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)
谢谢
答案 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(....)
并使用
尔格[迭代]
稍后。