Предполагая, что вы используете Unity.MVC4
NuGet (который зарегистрировал бы пользовательский DependencyResolver для вас):
container.RegisterType(
new HierarchicalLifetimeManager(),
new InjectionFactory(
c => new MyDbContext(configurationService.MySqlConnectionString)
)
);
container.RegisterType(
new HierarchicalLifetimeManager()
);
вы создаете пустой 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)
Другие пользователи уже указали на возможность использовать список непосредственно в первом методе, но я бы предложил один из способов реорганизации вашего кода, чтобы он работал.
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]
Следующие коды находятся под 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)))
с помощью генератора вы можете сделать это так, лучше, читабельнее и более питонически
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]