2017-12-11 5 views

答えて

1

再帰「は些細なケース」(プレーン数)と「再帰ケース」(配列)に関して定義される再帰関数を用いて、Xのすべての数字を追加する方法。私はどうなるのか

は、すべての数字を抽出し、発電機を作成し、オーバー合計である:numbers方法は、再帰的1つの

def numbers(xs): 
    if isinstance(xs, collections.Iterable): 
    yield from itertools.chain(*map(numbers, xs)) 
    else: 
    yield xs 

yield from構文は奇妙に見えるかもしれである

def nested_sum(x): 
    return sum(numbers(x)) 

- それはnumbersを(コレクションの...から)要素のコレクションから数値を生成するジェネレータに変換します。これは非常に強力なPythonの機能です。

1

私は再帰的に合計を見つけジェネレータ式を書くことをお勧めしたい:あなたが求めているものは不明である

mySum = lambda x:sum(a if isinstance(a,int) else mySum(a) for a in x) 
関連する問題