2010-02-19 12 views

Répondre

7

L'exemple est dans le itertools docs:

>>> import itertools 
>>> for i in itertools.product(range(2), repeat=4): 
    print(i) 
+0

Merci beaucoup à tous pour les réponses. Il s'avère que ce que je cherchais était un code Gray. Gray code après Frank Gray, est un système de numération binaire où deux valeurs successives diffèrent en un seul bit. WikiPedia –

0

Voir le générateur product.

Ce module implémente un certain nombre de iterator blocs de construction inspirés par des constructions de l'APL, Haskell et SML. Chacun a été refondu dans une forme approprié pour Python.

Le module standardise un ensemble de base d'outils rapides à mémoire efficace qui sont utiles seuls ou en combinaison. Ensemble, ils forment une « algèbre iterator » permettant de construire des outils spécialisés de façon succincte et efficace en Python pur

.

0
def print_all_combinations(max_value): 
    width = len('{0:0b}'.format(max_value)) 
    format_string = '{0:0%db}' % width 
    for i in xrange(max_value): 
     print format_string.format(i)
1
def f(n): 
    if n==1: 
     return ['0', '1'] 
    tmp = f(n-1) 
    return ['0'+v for v in tmp] + ['1'+v for v in tmp] 

>>> f(4) 
['0000', 
'0001', 
'0010', 
'0011', 
'0100', 
'0101', 
'0110', 
'0111', 
'1000', 
'1001', 
'1010', 
'1011', 
'1100', 
'1101', 
'1110', 
'1111'] 
1

Vous cherchez k-combinaisons. Vérifiez this sur.

La fonction que vous voulez regarder est xcombinations:

def xcombinations(items, n): 
    if n==0: yield [] 
    else: 
     for i in xrange(len(items)): 
      for cc in xcombinations(items[:i]+items[i+1:],n-1): 
       yield [items[i]]+cc 
+0

Merci pour le lien, beaucoup d'infos sur les générateurs et les combinaisons dont j'avais besoin ailleurs. –

Questions connexes