Сгладить неправильный список списков

| | | | | | | | | | | |

Да, я знаю, что эта тема обсуждалась ранее (здесь, здесь, здесь, здесь), но, насколько мне известно, все решения, кроме одного, терпят неудачу в следующем списке:

L = [[[1, 2 , 3], [4, 5]], 6] 

Где желаемый вывод

[1, 2, 3, 4, 5, 6] 

Или, что еще лучше, итератор. Единственное решение, которое я видел, которое работает для произвольного вложения, находится в этом вопросе:

def flatten(x): result = [] for el in x: if hasattr(el, "__iter__"), а не isinstance(el, basestring): result.extend(flatten(el)) else: result.append(el) return результат flatten(L) 

Это лучшая модель? Я что-то проглядел? Есть проблемы?