Сгладить нерегулярный (произвольно вложенный) список списковPython

Программы на Python
Ответить
Anonymous
 Сгладить нерегулярный (произвольно вложенный) список списков

Сообщение Anonymous »

Да, я знаю, что эта тема уже обсуждалась раньше:
  • Идиома Python для объединения (сглаживания) бесконечной итерации из конечных итераций?
  • Сведение неглубокого списка в Python
  • Понимание выравнивания последовательности последовательностей?
  • Как создать плоский список из списка списки?
но, насколько я знаю, все решения, кроме одного, терпят неудачу в списке типа [[[1, 2, 3], [4, 5]], 6], где желаемый результат — [1, 2, 3, 4, 5, 6] (или, что еще лучше, итератор).
Единственное решение, которое я видел, которое работает для произвольной вложенности, - это найдено в этом вопросе:

Код: Выделить всё

def flatten(x):
result = []
for el in x:
if hasattr(el, "__iter__") and not isinstance(el, basestring):
result.extend(flatten(el))
else:
result.append(el)
return result
Это лучший подход? Я что-то упустил из виду? Есть проблемы?

Подробнее здесь: https://stackoverflow.com/questions/215 ... t-of-lists
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»