Форум сайта python.su
вот такой вопрос: мне необходимо каждую итерацию заносить поочередно в список, соответственно список этот надо сначала создать, потом заполнить. можно ли прямо в цикле делать запись в список? вот код на примере вычисления факториала:
def fa(x):
if x==0 or x==1:
return 1
else:
return fa(x-1)*x
s=[0,0,0,0,0]
q=0
while q<5:
s[q]=fa(q)
q+=1
print s
Офлайн
def fa(x):
if x == 0 or x == 1:
return 1
else:
return fa(x-1)*x
s = []
q = 0
while q<5:
s.append(fa(q))
q += 1
print s
Отредактировано (Окт. 28, 2011 19:52:00)
Офлайн
Budulianinда, работает, я просто ищу более изящное решение. ваш код мне больше нравится, потому что не надо генерировать список с определенным количеством элементов.
Но как у Вас тоже работает
Офлайн
Так пойдет?
def fa(x):
return int(x < 1) or fa(x-1)*x
print map(fa, range(5))
Офлайн
Чтобы получить список и при этом еще не вычислять факториалы одних и тех же чисел кучу раз, можно сделать генератор (в частности, рекурсивный):
def fa(x):
if x == 0: yield 1
else:
for k in fa(x-1): yield k
yield x*k
print( list(fa(5)) )
# или формируем список руками
s = [k for k in fa(5)] # то же, что и s = list( fa(5) )
Отредактировано (Окт. 29, 2011 09:10:50)
Офлайн
спасибо за советы)
Офлайн