Найти - Пользователи
Полная версия: создание и заполнение списка
Начало » Python для новичков » создание и заполнение списка
1
eiyawii
вот такой вопрос: мне необходимо каждую итерацию заносить поочередно в список, соответственно список этот надо сначала создать, потом заполнить. можно ли прямо в цикле делать запись в список? вот код на примере вычисления факториала:
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
соответственно после функции фа(х) выполняется создание и заполнение списка. если я создаю пустой список в цикле вычисления факториалов и добавляю в пустой список значение факториала на каждом шаге (s+=fa(x)), то соответственно выдаё ошибку что объект не итерабле.
Budulianin
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
Но как у Вас тоже работает
eiyawii
Budulianin
Но как у Вас тоже работает
да, работает, я просто ищу более изящное решение. ваш код мне больше нравится, потому что не надо генерировать список с определенным количеством элементов.
Ed
Так пойдет?
def fa(x):
return int(x < 1) or fa(x-1)*x
print map(fa, range(5))
Isem
Чтобы получить список и при этом еще не вычислять факториалы одних и тех же чисел кучу раз, можно сделать генератор (в частности, рекурсивный):
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) )
eiyawii
спасибо за советы)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB