Python: fusionar listas anidadas

Principiante de python aquí.

Tengo 2 listas anidadas que quiero fusionar:

list1 = ['a', (b, c), (d, e), (f, g, h) ] list2 = [(p,q), (r, s), (t), (u, v, w) ] 

La salida que estoy buscando es:

 list3 = [(a, p, q), (b, c, r, s), (d, e, t), (f, g, h, u, v, w) ] 

¿Se puede hacer esto sin ninguna biblioteca externa? nota: len (list1) = len (list2)

Usa el poder de la función zip y enumera las comprensiones :

 list1 = [('a', ), ('b', 'c'), ('d', 'e'), ('f', 'g', 'h') ] list2 = [('p', 'q'), ('r', 's'), ('t', ), ('u', 'v', 'w') ] print [a + b for a, b in zip(list1, list2)] 
 from operator import add list3 = map(add, list1, list2) 

Si el orden dentro de una lista / tupla interna no es importante, puede usar las operaciones de conjuntos matemáticos.

imprimir [tupla (set (a) | set (b)) para a, b en zip (x, y)]

El set (a) | set (b) convierte los iterables a y b en sets y toma la unión de los dos sets. Luego se convierten de nuevo a tupla como se desee en el formato de salida.

Como usted es un principiante de python, se recomienda encarecidamente dominar la comprensión de listas. Es demasiado poderoso y conciso. Además de hacer que su código sea más ‘pythonic’, las comprensiones de listas pueden actuar como un reemplazo más amigable para las funciones ‘map’ y ‘filter’.