Почему порядок множественного понимания списка `for` такой, какой он есть?
Я знаю правильный способ иметь несколькоfor
Вложенный список выглядит следующим образом (Python 3):
lista = [[[1,2],[3],[4,5,6]],[[7],[8,9]]]
flatlista = [i for k in lista for j in k for i in j]
# results with [1, 2, 3, 4, 5, 6, 7, 8, 9]
Но мои естественные языковые инстинкты сильно возражают. Я бы (ошибочно) ожидал, что код будет:
flatlista = [i for i in j for j in k for k in lista]
Неправильная версия звучит почти как английский и читается в одном потоке слева направо. Правильная версия требует некоторых вложенных навыков чтения, пропуская влево и вправо, чтобы охватить смысл.
Почему этот синтаксис как есть? Почему язык был построен таким образом?