Python: Unión elemental de dos listas de la misma longitud.

Tengo dos listas de la misma longitud

a = [[1,2], [2,3], [3,4]] b = [[9], [10,11], [12,13,19,20]] 

y quieren combinarlos para

 c = [[1, 2, 9], [2, 3, 10, 11], [3, 4, 12, 13, 19, 20]] 

Hago esto por

 c= [] for i in range(0,len(a)): c.append(a[i]+ b[i]) 

Sin embargo, estoy acostumbrado a R para evitar bucles y las alternativas como zip e itertools no generan el resultado deseado. ¿Hay alguna manera de hacerlo mejor?

EDIT: ¡ Gracias por la ayuda! Mis listas tienen 300,000 componentes. El tiempo de ejecución de las soluciones son:

 [a_ + b_ for a_, b_ in zip(a, b)] 1.59425 seconds list(map(operator.add, a, b)) 2.11901 seconds 

Python tiene una función zip incorporada, no estoy seguro de qué tan similar es a las R, puedes usarla así

 a_list = [[1,2], [2,3], [3,4]] b_list = [[9], [10,11], [12,13]] new_list = [a + b for a, b in zip(a_list, b_list)] 

La syntax de [ ... for ... in ... ] se denomina comprensión de lista si desea saber más.

 >>> help(map) map(...) map(function, sequence[, sequence, ...]) -> list Return a list of the results of applying the function to the items of the argument sequence(s). If more than one sequence is given, the function is called with an argument list consisting of the corresponding item of each sequence, substituting None for missing values when not all sequences have the same length. If the function is None, return a list of the items of the sequence (or a list of tuples if more than one sequence). 

Como puede ver, el map(…) puede tomar múltiples iterables como argumento.

 >>> import operator >>> help(operator.add) add(...) add(a, b) -- Same as a + b. 

Asi que:

 >>> import operator >>> map(operator.add, a, b) [[1, 2, 9], [2, 3, 10, 11], [3, 4, 12, 13]] 

Tenga en cuenta que en Python 3, el map(…) devuelve un generador de forma predeterminada. Si necesita acceso aleatorio o si desea repetir el resultado varias veces, debe usar la list(map(…)) .

Puedes hacerlo de esta manera:

 >>> [x+b[i] for i,x in enumerate(a)] [[1, 2, 9], [2, 3, 10, 11], [3, 4, 12, 13, 19, 20]] 

Para fusionar dos listas, python lo hace tan fácil:

 mergedlist = listone + listtwo