Функция, которая создает списки с вводом из другой функции

Предполагая, что вы используете Unity.MVC4 NuGet (который зарегистрировал бы пользовательский DependencyResolver для вас):

container.RegisterType(
    new HierarchicalLifetimeManager(),
    new InjectionFactory(
        c => new MyDbContext(configurationService.MySqlConnectionString)
    )
);
container.RegisterType(
    new HierarchicalLifetimeManager()
);

0
задан Mathbeginner 17 January 2019 в 06:32
поделиться

4 ответа

вы создаете пустой factor_list каждый раз, когда происходит вызов списка диагоналей. На самом деле вам не нужна другая функция для сохранения результатов в списке, попробуйте следующий код:

B = [3,6,5,7,8,10]
def function_1(A):
    l1 = []
    for i in range(len(A)/2):
         factor = A[2*i]
         l1.append(factor)
    return l1
print function_1(B)
0
ответ дан Amit Nanaware 17 January 2019 в 06:32
поделиться

Другие пользователи уже указали на возможность использовать список непосредственно в первом методе, но я бы предложил один из способов реорганизации вашего кода, чтобы он работал.

def function_1(array):
    list_of_diagonals_ = [] # <-- initialize the recipient
    for i in range(len(array)//2): # <-- # // to return integer
         factor = array[2*i]
         list_of_diagonals_ = list_of_diagonals(factor, list_of_diagonals_) # <-- call the function and store to recipient
    return list_of_diagonals_ # <-- return the recipient

def list_of_diagonals(element, factor_list = None): # <-- need an argument to memorize past results
    if factor_list == None: factor_list = [] # <-- just in case
    factor_list.append(element)
    return factor_list

B = [3,6,5,7,8,10]
print (function_1(B))
#=> [3, 5, 8]
0
ответ дан iGian 17 January 2019 в 06:32
поделиться

Следующие коды находятся под Python2.7

, использование islice в itertools может помочь в вашем случае

from itertools import islice

B = [3, 6, 5, 7, 8, 10]


def function_1(A):
    return islice(A, 0, None, 2)

# [3, 5, 8]
print(list(function_1(B)))
0
ответ дан Menglong Li 17 January 2019 в 06:32
поделиться

с помощью генератора вы можете сделать это так, лучше, читабельнее и более питонически

B = [3,6,5,7,8,10]
def function_1(A):
    for i in range(len(A)//2):
         factor = A[2*i]
         yield factor

result = list(function_1(B))
# output [3, 5, 8]
0
ответ дан prashant rana 17 January 2019 в 06:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: