Me está costando encontrar una solución para fusionar dos tipos diferentes de elementos dentro de la lista.

list_i = ['teacher', '10', 'student', '100', 'principle', '2']

Resultado:

list_1 = ['teacher:10', 'student:100', 'principle:2']

Cualquier ayuda es muy apreciado!!

2
dlfjj 30 oct. 2017 a las 10:30

3 respuestas

La mejor respuesta

Esto funcionará:

[list_i[i] + ":" + list_i[i+1] for i in range(0, len(list_i), 2)]

Esto produce:

['teacher:10', 'student:100', 'principle:2']
6
Tom Karzes 30 oct. 2017 a las 07:34

Usando more_itertools, una biblioteca de terceros, puede aplicar una técnica de ventana deslizante:

> pip install more_itertools

Código

import more_itertools as mit


iterable = ['teacher', '10', 'student', '100', 'principle', '2']

[":".join(i) for i in mit.windowed(iterable, 2, step=2)]
# ['teacher:10', 'student:100', 'principle:2']

Alternativamente, aplique la grouper receta de itertools, que también se implementa en more_itertools.

[":".join(i) for i in mit.grouper(2, iterable)]
# ['teacher:10', 'student:100', 'principle:2']
0
pylang 30 oct. 2017 a las 08:19

Use el siguiente código

[':'.join(item) for item in zip(list_i[::2],list_i[1::2])]

Esto solo dividirá la lista en 2 partes y las unirá con zip

5
daemon24 30 oct. 2017 a las 07:41