OK, after some work, and use the recommendations of the other answers. mainly lazir. (and now converting it to a class) __all_perms: https://stackoverflow.com/a/377829/
class Interleave(): def __init__(self, A, B): self.A = A self.B = B self.results = list(self.__interleave())
and here is the use:
>>> A = ['a', 'b', 'c'] >>> B = ['d', 'e', 'f'] >>> Interleave(A, B) ['abcdef', 'abdcef', 'abdecf', 'abdefc', 'adbcef', 'adbecf', 'adbefc', 'adebcf', 'adebfc', 'adefbc', 'dabcef', 'dabecf', 'dabefc', 'daebcf', 'daebfc', 'daefbc', 'deabcf', 'deabfc', 'deafbc', 'defabc']
you can also access class members, for example:
>>> inter = Interleave(A, B) >>> inter.results ['abcdef', 'abdcef', 'abdecf', 'abdefc', 'adbcef', 'adbecf', 'adbefc', 'adebcf', 'adebfc', 'adefbc', 'dabcef', 'dabecf', 'dabefc', 'daebcf', 'daebfc', 'daefbc', 'deabcf', 'deabfc', 'deafbc', 'defabc'] >>> inter.A ['a', 'b', 'c'] >>> inter.B ['d', 'e', 'f']