Voglio unire due elenchi in python, con gli elenchi di diverse lunghezze, in modo che gli elementi della lista più breve siano equamente distribuiti all'interno dell'elenco finale possibile. io voglio prendere [1, 2, 3, 4]
e ['a','b']
e unirli per ottenere un elenco simile a [1, 'a', 2, 3, 'b', 4]
. Deve essere in grado di funzionare con elenchi che non sono multipli esatti, quindi potrebbe richiedere [1, 2, 3, 4, 5]
e ['a', 'b', 'c']
e produrre [1, 'a', 2, 'b', 3, 'c', 4, 5]
o simili. Ha bisogno di preservare l'ordine di entrambe le liste.Come interleave elegantemente due elenchi di lunghezza non uniforme in python?
Posso vedere come farlo con un metodo a forza bruta prolisso ma poiché Python sembra avere una vasta gamma di strumenti eccellenti per fare ogni sorta di cose intelligenti di cui non so (ancora) mi sono chiesto se c'è qualcosa di più elegante che posso usare?
NB: sto usando Python 3.3.
Perché il '' b'' arriva tra 3 e 4? – kennytm
Perché li spazia in modo uniforme all'interno dell'elenco. Prenderò anche [[a, 1, 2, 'b', 3, 4] ', ma la rotazione sembra più bella ai miei occhi. –
http://docs.python.org/2/library/functions.html#slice potrebbe aiutare. Vedi anche il modulo 'itertools'. Ora la parte importante qui è l'algoritmo, non gli strumenti stessi. –