Как увидеть возможные комбинации данного числа в Python - PullRequest
1 голос
/ 19 февраля 2010

в Python Я хочу увидеть все возможные комбинации числа, но ограничиваюсь 0 и 1 ...

Так, например, результатом некоторого цикла будет:

0000
0001
0011
0111
1111
1000
and so on.

Какой алгоритм Python лучше всего подойдет для этого?

Ответы [ 5 ]

7 голосов
/ 19 февраля 2010

Пример в itertools документах :

>>> import itertools
>>> for i in itertools.product(range(2), repeat=4):
    print(i)
1 голос
/ 19 февраля 2010

Вы ищете k-комбинации. Проверьте это .

Функция, которую вы хотите посмотреть, - это xcombination:

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
1 голос
/ 19 февраля 2010
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']
0 голосов
/ 19 февраля 2010
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)
0 голосов
/ 19 февраля 2010

См. продукт генератор.

В этом модуле реализован ряд вдохновляющих блоков итераторов. конструкциями из APL, Haskell и SML. Каждый был переделан в Форма подходит для Python.

Модуль стандартизирует базовый набор быстрых и эффективных инструментов памяти которые полезны сами по себе или в сочетании. Вместе они образуют «алгебра итераторов», позволяющая строить специализированные инструменты лаконично и эффективно в чистом Python

.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...