Вот код, который я придумал:
def combinations(input):
ret = ['']
for i in range(len(input)):
ret.extend([prefix+input[i] for prefix in ret])
return ret
Этот алгоритм требует времени O(2^n), но можно ли уменьшить пространство? Я слышал об использовании yield
может работать, но у меня возникли проблемы с тем, как реализовать с помощью yield
. Пожалуйста, не используйте встроенную комбинированную функцию — я хотел бы посмотреть, как она реализована.