Форум сайта python.su
0
Требуется помощь.. Дословно задание звучит так - “Написать генератор списка, который генерирует список от 1 до 100 и каждое нечетное число возводит в квадрат”. Не могу понять, как прописать условия. Либо все числа в квадрате, либо список получается только из нечетных в квадрате…
Объясните дураку…
Забыл уточнить - версия 2.7
Отредактировано alcochtivo (Дек. 4, 2013 07:55:52)
Офлайн
221
alcochtivo
[x**2 if x%2 else x for x in xrange(100)] [0, 1, 2, 9, 4, 25, 6, 49, 8, 81, 10, 121, 12, 169, 14, 225, 16, 289, 18, 361, 20, 441, 22, 529, 24, 625, 26, 729, 28, 841, 30, 961, 32, 1089, 34, 1225, 36, 1369, 38, 1521, 40, 1681, 42, 1849, 44, 2025, 46, 2209, 48, 2401, 50, 2601, 52, 2809, 54, 3025, 56, 3249, 58, 3481, 60, 3721, 62, 3969, 64, 4225, 66, 4489, 68, 4761, 70, 5041, 72, 5329, 74, 5625, 76, 5929, 78, 6241, 80, 6561, 82, 6889, 84, 7225, 86, 7569, 88, 7921, 90, 8281, 92, 8649, 94, 9025, 96, 9409, 98, 9801]
Офлайн
0
JOHN_16, спасибо. Не знал, что if можно использовать перед for, а так же о возможности использования else…
Офлайн
0
a=[] for e in range(1,100): if e % 2: e = e**2 a.append(e) print a
Отредактировано Flicker (Дек. 4, 2013 08:50:58)
Офлайн
0
Flicker, соль задания была именно в том, чтобы написать генератор списка - в одну строку. Твой вариант тоже рабочий, но не является решением задачи… Все равно - спасибо за ответ.
Офлайн
221
Flicker
alcochtivo
не путайте разные схематические конструкции:
1)
A if B else C
[A(X) for in B if X>Y]
Офлайн