1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| >>> from itertools import cycle, accumulate
>>> from functools import reduce
>>>
>>> texte = "toto va a la plage"
>>> liste = ["1","2","3","4","5"]
>>>
>>> lettres = [''.join(x) for x in zip(cycle(liste[:-1]+liste[:0:-1]),texte.replace(' ',''))]
>>> lettres
['1t', '2o', '3t', '4o', '5v', '4a', '3a', '2l', '1a', '2p', '3l', '4a', '5g', '4e']
>>>
>>> indices = list(accumulate([len(x)+1 for x in texte.split(' ')], initial=-1))[1:-1]
>>> indices
[4, 7, 9, 12]
>>>
>>> ''.join(reduce(lambda x,y : x[:y] + [' '] + x[y:], indices, lettres))
'1t2o3t4o 5v4a 3a 2l1a 2p3l4a5g4e'
>>> |