2013-07-20 7 views
1
str(reduce(lambda x, y: x * y, range(1, 11))) -> this returns 10! or '3628800' 

Не создавая цикл for, как я могу сопоставить эту функцию с другой функцией как список целых чисел с одной цифрой: например. reduce(lambda x, y: x+ y, [3, 6, 2, 8, 8, 0, 0])Как превратить строку цифр в список одноразрядных целых чисел?

Разъяснение:

reduce(lambda x, y: x + y, [str(reduce(lambda x, y: x * y, range(1, 11)))])

Как я включаю все внутри [ ] в список однозначных чисел так, что первая функция может оценить ее? Конечно, мне нужно преобразовать его внутри[ ].

+0

Что вам нужно? – zhangyangyu

+0

Не совсем понял, какого конкретного результата вы просите, к сожалению. – roippi

+0

Если я правильно понял, вы спрашиваете, как преобразовать число в список его (базовых 10) цифр без использования цикла? Возможно, вы захотите переформулировать вопрос, поскольку это не очень ясно. – goncalopp

ответ

1

Вы можете использовать список понимание:

[int(x) for x in str(reduce(lambda x, y: x * y, range(1, 11)))] 

Конечный продукт:

reduce(lambda x, y: x + y, [int(x) for x in str(reduce(lambda x, y: x * y, range(1, 11)))]) 
+0

Там вы идете! Благодарю. – Deneb

7

Я думаю, вы просто ищете map(int, s) где s - это строка, из которой вы хотите получить целые числа. Например:

>>> import math 
>>> math.factorial(10) 
3628800 
>>> str(math.factorial(10)) 
'3628800' 
>>> map(int,str(math.factorial(10))) 
[3, 6, 2, 8, 8, 0, 0] 
>>> sum(map(int,str(math.factorial(10)))) 
27 
Смежные вопросы