Girish Sahani wrote: >>>thanks lawrence...however this func doesnt return the permuted strings, >>>so >>>i added some code as follows to generate a list of all the permutations: >>> >>>def permute(seq): >>> l = [] >>> if len(seq) == 0: >>> yield [] >>> else: >>> for i in range(0,len(seq)): >>> for rest in permute(seq[:i] + seq[i+1:]): >>> yield (seq[i],) + rest >>> for t in permute(seq): >>> l.append(''.join(t)) >>> return l >>> >>>This gives me a syntax error! >>>I need to output a list that has all the permutations of the input >>>string. >>> >>> >>> >>> >>> >>>>-- >>>>http://mail.python.org/mailman/listinfo/python-list >>>> >>> >>> >>p = ["".join(s) for s in permute('abcdefg')] > > > This fails to work too. I'm trying to call permute func from another func, > python gives me a TypeError as follows: > > def permute(seq): > l = [] > if len(seq) == 0: > yield [] > else: > for i in range(0,len(seq)): > for rest in permute(seq[:i] + seq[i+1:]): > yield (seq[i],) + rest > > def main(stringList): > for string in stringList: > permList = list(permute(string)) > l = ["".join(s) for s in permList] > > >>>>l = ['abc','abd','bcd'] >>>>main(l) > > TypeError: can only concatenate tuple (not "list") to tuple >
I think I should have provided a context for my example. It was to be used with Lawrence D'Olivero's code and not yours. James >>> def permute(Seq) : ... """generator which yields successive permutations of the elements ... of Seq.""" ... if len(Seq) == 0 : ... yield () ... else : ... for i in range(0, len(Seq)) : ... for rest in permute(Seq[:i] + Seq[i + 1:]) : ... yield (Seq[i],) + rest ... >>> def main(stringList): ... for string in stringList: ... l = ["".join(s) for s in permute(string)] ... print l ... >>> l ['abc', 'abd', 'bcd'] >>> main(l) ['abc', 'acb', 'bac', 'bca', 'cab', 'cba'] ['abd', 'adb', 'bad', 'bda', 'dab', 'dba'] ['bcd', 'bdc', 'cbd', 'cdb', 'dbc', 'dcb'] -- http://mail.python.org/mailman/listinfo/python-list