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

ループを作成せずに、forこの関数を 1 桁の整数のリストとして別の関数にマップするにはどうすればよいですか。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)))])

[ ]最初の関数がそれを評価できるように、内部のすべてを 1 桁の整数のリストに変換するにはどうすればよいですか? もちろん、で変換する必要があり[ ]ます。

4

2 に答える 2

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
于 2013-07-20T02:55:19.177 に答える
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)))])
于 2013-07-20T02:57:25.723 に答える