'bee foo zee bar bee' => ['bee', 'foo', 'zee', 'bar', 'bee'] :
from itertools import product repl = { 'bee': 'BETA', 'zee': 'ZETA', 'dee': 'DELTA' } source_string = 'bee foo zee bar bee' p = product(*((x, repl[x]) if x in repl else (x,) for x in source_string.split())) for x in p: print(x)
Output:
('bee', 'foo', 'zee', 'bar', 'bee') ('bee', 'foo', 'zee', 'bar', 'BETA') ('bee', 'foo', 'ZETA', 'bar', 'bee') ('bee', 'foo', 'ZETA', 'bar', 'BETA') ('BETA', 'foo', 'zee', 'bar', 'bee') ('BETA', 'foo', 'zee', 'bar', 'BETA') ('BETA', 'foo', 'ZETA', 'bar', 'bee') ('BETA', 'foo', 'ZETA', 'bar', 'BETA')