Если у вас много выходных данных из функции, и вы не хотите вызывать ее несколько раз, я думаю, что самый простой способ выбрать результаты:
results = fct()
a,b = [results[i] for i in list_of_index]
В качестве минимального рабочего примера, также демонстрирующего, что функция вызывается только один раз:
def fct(a):
b=a*2
c=a+2
d=a+b
e=b*2
f=a*a
print("fct called")
return[a,b,c,d,e,f]
results=fct(3)
> fct called
x,y = [results[i] for i in [1,4]]
И значения, как и ожидалось:
results
> [3,6,5,9,12,9]
x
> 6
y
> 12
Для удобства можно также использовать индексы списка Python:
x,y = [results[i] for i in [0,-2]]
Возвращает: a = 3 и b = 12