0

私は決定木でこの本を読んでいますが、著者はパワーセットを生成するコードの例を示しました。説明は神秘的なものですが、私はすべての操作の構文と意味を理解しています。私はこのアルゴリズムの背後にある推論を得ていません。項目リストのパワーセットを生成するためのこのプログラムのロジックは何ですか?

# generate all combinations of N items 
def powerSet(items): 
    N = len(items) 
    # enumerate the 2**N possible combinations 
    for i in range(2**N): 
     combo = [] 
     for j in range(N): 
      # test bit jth of integer i 
      if (i >> j) % 2 == 1: 
       combo.append(items[j]) 
     yield combo 

答えて

0

ジェネレータは大きなイテレータに対して非常に効率的な方法です。

一度呼び出すことができます! コード全体を返す関数の代わりに'yield'によって多くの値を返すようにすることができます。ジェネレータは一度に1つの値を返します。これは、より少ないメモリを必要とする。

降伏コンボは病気

(2 ** N) 回コンボを発生させます

関連する問題