в Python Я хочу увидеть все возможные комбинации числа, но ограничиваюсь 0 и 1 ...
Так, например, результатом некоторого цикла будет:
0000 0001 0011 0111 1111 1000 and so on.
Какой алгоритм Python лучше всего подойдет для этого?
Пример в itertools документах :
itertools
>>> import itertools >>> for i in itertools.product(range(2), repeat=4): print(i)
Вы ищете 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
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']
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)
См. продукт генератор.
В этом модуле реализован ряд вдохновляющих блоков итераторов. конструкциями из APL, Haskell и SML. Каждый был переделан в Форма подходит для Python. Модуль стандартизирует базовый набор быстрых и эффективных инструментов памяти которые полезны сами по себе или в сочетании. Вместе они образуют «алгебра итераторов», позволяющая строить специализированные инструменты лаконично и эффективно в чистом Python
В этом модуле реализован ряд вдохновляющих блоков итераторов. конструкциями из APL, Haskell и SML. Каждый был переделан в Форма подходит для Python.
Модуль стандартизирует базовый набор быстрых и эффективных инструментов памяти которые полезны сами по себе или в сочетании. Вместе они образуют «алгебра итераторов», позволяющая строить специализированные инструменты лаконично и эффективно в чистом Python
.