Tengo una lista a continuación
a = [['1321.', 'Fuji', 'Kto', '776'], ['3123.', 'dake', 'Cu', '392'], ['123.', 'Hota', 'Cu', '310']]
Y tengo dos listas de cadenas y quiero agregarlas a la lista anterior por secuencia para formar una nueva lista.
id = ['pid=1882','pid=1086','pid=180']
lgt = ['38.72347',
'38.23833',
'37.64986']
El resultado debería convertirse
new_list = [['1321.', 'Fuji', 'Kto', '776', 'pid=1882', '38.72347'],
['3123.', 'dake', 'Cu', '392', 'pid=1086', '38.23833'],
['123.', 'Hota', 'Cu', '310', 'pid=180', '37.64986']]
He probado el método zip pero el resultado es una tupla, no una lista.
new_list = list(zip(a, id, lgt))
new_list -> [[['1321.', 'Fuji', 'Kto', '776'], 'pid=1882', '38.72347'],
[['3123.', 'dake', 'Cu', '392'], 'pid=1086', '38.23833'],
[['123.', 'Hota', 'Cu', '310'], 'pid=180', '37.64986']]]
¡Gracias!
4 respuestas
Puede usar zip
, pero luego debe descomprimir el elemento de la lista.
a = [['1321.', 'Fuji', 'Kto', '776'], ['3123.', 'dake', 'Cu', '392'], ['123.', 'Hota', 'Cu', '310']]
ids = ['pid=1882', 'pid=1086', 'pid=180']
lgt = ['38.72347', '38.23833', '37.64986']
result = [[*x, y, z] for x, y, z in zip(a, ids, lgt)]
print(result)
# [['1321.', 'Fuji', 'Kto', '776', 'pid=1882', '38.72347'], ['3123.', 'dake', 'Cu', '392', 'pid=1086', '38.23833'], ['123.', 'Hota', 'Cu', '310', 'pid=180', '37.64986']]
Con las tuplas generadas al comprimir las tres listas, puede usar el desempaquetado de iteradores para asignar elementos de ids
y lgt
en una lista para concatenar con los elementos de la lista de a
:
[s + r for s, *r in zip(a, ids, lgt)]
Esto devuelve:
[['1321.', 'Fuji', 'Kto', '776', 'pid=1882', '38.72347'],
['3123.', 'dake', 'Cu', '392', 'pid=1086', '38.23833'],
['123.', 'Hota', 'Cu', '310', 'pid=180', '37.64986']]
Puede usar la siguiente solución:
list(zip(*zip(*a), id, lgt))
Resultado:
[('1321.', 'Fuji', 'Kto', '776', 'pid=1882', '38.72347'),
('3123.', 'dake', 'Cu', '392', 'pid=1086', '38.23833'),
('123.', 'Hota', 'Cu', '310', 'pid=180', '37.64986')]
Si necesita una lista de listas:
list(map(list, zip(*zip(*a), id, lgt)))
Mira esto :
list = [['1321.', 'Fuji', 'Kto', '776'], ['3123.', 'dake', 'Cu', '392'], ['123.', 'Hota', 'Cu', '310']]
id = ['pid=1882','pid=1086','pid=180']
lgt = ['38.72347','38.23833','37.64986']
for index, value in enumerate(list):
list[index].append(id[index])
list[index].append(lgt[index])
Preguntas relacionadas
Nuevas preguntas
python
Python es un lenguaje de programación multipropósito, de tipificación dinámica y de múltiples paradigmas. Está diseñado para ser rápido de aprender, comprender y usar, y hacer cumplir una sintaxis limpia y uniforme. Tenga en cuenta que Python 2 está oficialmente fuera de soporte a partir del 01-01-2020. Aún así, para preguntas de Python específicas de la versión, agregue la etiqueta [python-2.7] o [python-3.x]. Cuando utilice una variante de Python (por ejemplo, Jython, PyPy) o una biblioteca (por ejemplo, Pandas y NumPy), inclúyala en las etiquetas.