See the documentation:
list.append(x)
- Add an item to the end of the list; equivalent to a[len(a):] = [x].
list.extend(L) - Extend the list by appending all the items in the given list; equivalent to a[len(a):] = L.
c.append(c)
"appends" c to itself as an element. Since a list is a reference type, this creates a recursive data structure.
c += c
is equivalent to extend(c)
, which appends the elements of c to c.