Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Перевести код в генератор списков python

Accord Знаток (447), на голосовании 6 лет назад
есть такой код но я не знаю как перевести его в генератор списков очень прошу помоч
Голосование за лучший ответ
Aleks Nots Просветленный (26567) 6 лет назад
"я не знаю как перевести его в генератор списков"
Аналогично.

Вообще-то Лутц пишет
"
Вообще они (генераторы списков) предназначены для реализации про-
стых итераций – для реализации сложных действий более простая инструк-
ция for наверняка будет проще и для понимания, и для изменения в будущем.
"

А приведенный Вами код, даже с использованием нормально прописанных циклов for, совсем неочевиден, в том смысле, что трудно с ходу понять, что получится на выходе.
А уж если кому удастся запихнуть его в одну строку, то по-моему будет вообще что-то мозговыносящее.
Притом, что в философии питона явно прописано
"
Явное лучше, чем неявное.
Простое лучше, чем сложное.
Сложное лучше, чем запутанное.
"
extrnМыслитель (7183) 6 лет назад
именно поэтому лучше написать с помощью генератора.
это заставит посмотреть на задачу под другим углом, и в итоге значительно упростить код.
не стану выкладывать готовое решение, но оно получается вполне коротким, емким и читаемым при должном подходе.
Aleks Nots Просветленный (26567) "не стану выкладывать готовое решение" Так? arr = [abs(i-j)+1 for i in range(n) for j in range(n)] Вот здесь полностью https://pastebin.com/BuhNwRa5 Вроде бы результат выдает такой же как и в варианте на фото в вопросе.
Похожие вопросы