#!/usr/bin/env python3 def of_bucket(lst, depth=0) : """ return all combinations of items in buckets """ #dbg print("of_bucket({0}, {1})".format(lst, depth)) for item in lst[0] : if len(lst) > 1 : for result in of_bucket(lst[1:], depth+1) : yield [item,] + result else : yield [item,] if __name__ == '__main__' : bucket_lst = [["ba", "be", "bi"], ["ka", "ko", "ku", "ke"], ["to", "ty"]] for n, combination in enumerate(of_bucket(bucket_lst)) : print("{0:2d}. {1}".format(n, '-'.join(combination)))