2013-04-18 2 views
0

Я запускаю python 2.7.3. У меня есть список функций, которые я вызываю каждый. Некоторые функции возвращают несколько выходов. Я хотел бы сохранить все выходы всех функций в списке. Как я могу это сделать?Как читать переменное число выходов

def f1(): 
    return [1,2], [3,4] 
def f2(): 
    return [5,6] 
my_outputs = [] 
my_funcs = [f1, f2] 
for func in my_funcs: 
    output_list* = func() # does this work? 
    # a,b,c... = func() 
    my_outputs.extend(output_list) 

print my_outputs 
[[1,2], [3,4], [5,6]] 
+0

я бы поспорить, это охватывается в официальном руководстве. – millimoose

+1

Дайте ему попробовать, и вы узнаете. – Maroun

+0

Вы хотите, чтобы вы * расширили * список, когда функция возвращает последовательность, и просто добавьте, когда функция возвращает только одно значение? Функции, возвращающие несколько значений, просто возвращают одно значение, * * tuple() '*. –

ответ

1

Вы можете проверить тип возвращаемого с isinstance, хотя это не очень вещими.

my_outputs = [] 
my_funcs = [f1, f2, f3] 
for func in my_funcs: 
    result = func() 
    if isinstance(result, tuple): 
     my_outputs.extend(result) 
    else: 
     my_outputs.append(result) 
+0

это добавляет кортеж в список – siamii

+0

use my_outputs.extend (func()) – Zangetsu

+0

@siamii исправил его. – msvalkon