On Tue, Jul 10, 2018 at 09:46:57PM -0500, Jim wrote: > Say I have a list like ltrs and I want to print out all the possible 3 > letter combinations. I want to combine letters from each inner list but > not combine any letters within the inner list itself. So ACF and ADF > would be ok but ABC would not. > > I can lay it out manually and see the pattern, I cannot figure out how > to do it programically. Just in case this looks like homework it is not. > It's a small test case I devised to try to figure it out so I can apply > it to a bigger real world problem I am working on. > > ltrs = [['A', 'B'], ['C', 'D', 'E'], ['F', 'G', 'H', 'I']]
If you know that there are just three sublists, then you can do this: for a in ltrs[0]: for b in ltrs[1]: for c in ltrs[2]: print(a + b + c) I trust that's easy enough to understand. But here's a more general technique, where you don't need to know up front how many nested lists there are: from itertools import product # short for "Cartesian Product" for s in product(*ltrs): print(''.join(s)) The *ltrs syntax might be a bit mysterious: it is called "sequence unpacking", and tells the interpreter to use each item from ltrs as a separate argument: product(*ltrs) => product(ltrs[0], ltrs[1], ltrs[2]) -- Steve _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: https://mail.python.org/mailman/listinfo/tutor