En realidad es un pequeño error de sintaxis.
El código que creo que tú querías escribir era el siguiente.
def flatten(l):
a=0
b=[]
while a<len(l):
if l[a]!=[]:
b=b+l[a]
a=a+1
return b
En este caso accedes a la lista contenida en el índice a. Al usar el operador +, estás sumando ambas listas.
Con ello, las unes y consigues que los elementos de ambas listas estén en la misma.
El error que cometías era crear una lista con el elemento del índice a, por lo que era una lista de listas lo que sumabas.
Además, también me he dado cuenta de que no te hace falta comprobar si la lista está vacía. En el caso en el que l[a]
esté vacía, b quedará como estaba.
Como consejo personal, te aconsejo que utilices bucles for para iterar la secuencia, el
código suele acabar en código más entendible.
def flatten(seq):
b = []
for s in seq:
for e in s:
b.append(e)
return b
Y bueno, bienvenido al foro, espero que la pases bien y con esta comunidad

.