El operador de concatenación +es un operador infijo binario que, cuando se aplica a listas, devuelve una nueva lista que contiene todos los elementos de cada uno de sus dos operandos. El list.append()método es un mutatoren el listque agrega su único objectargumento (en su ejemplo específico, la lista c) al tema list. En su ejemplo, esto da como resultado que se cagregue una referencia a sí mismo (de ahí la recursividad infinita).
Una alternativa a la concatenación '+'
El list.extend()método es también un método mutador que concatena su sequenceargumento con el sujeto list. Específicamente, agrega cada uno de los elementos de sequenceen orden de iteración.
Un aparte
Al ser un operador, +devuelve el resultado de la expresión como un nuevo valor. Al ser un mutatormétodo no encadenado , list.extend()modifica la lista de temas en el lugar y no devuelve nada.
Matrices
Agregué esto debido a la posible confusión que la respuesta de Abel anterior puede causar al mezclar la discusión de listas, secuencias y matrices.
Arraysse agregaron a Python después de las secuencias y listas, como una forma más eficiente de almacenar matrices de tipos de datos integrales. No confunda arrayscon lists. Ellos no son los mismos.
De los documentos de la matriz :
Las matrices son tipos de secuencia y se comportan de manera muy parecida a las listas, excepto que el tipo de objetos almacenados en ellas está restringido. El tipo se especifica en el momento de la creación del objeto mediante un código de tipo, que es un solo carácter.