def combinations(input_list, acc=''):
    if not input_list:
        yield acc
return
next_val = input_list[0]
for rest in combinations(input_list[1:], acc):
    yield rest
acc += next_val
for rest in combinations(input_list[1:], acc):
    yield rest
Какой самый эффективный способ создания комбинаций набора в python?