Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 4, 2013 07:53:02

alcochtivo
Зарегистрирован: 2013-12-04
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Генератор списка с условиями

Требуется помощь.. Дословно задание звучит так - “Написать генератор списка, который генерирует список от 1 до 100 и каждое нечетное число возводит в квадрат”. Не могу понять, как прописать условия. Либо все числа в квадрате, либо список получается только из нечетных в квадрате…
Объясните дураку…
Забыл уточнить - версия 2.7

Отредактировано alcochtivo (Дек. 4, 2013 07:55:52)

Офлайн

#2 Дек. 4, 2013 08:37:57

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Генератор списка с условиями

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]



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#3 Дек. 4, 2013 08:43:55

alcochtivo
Зарегистрирован: 2013-12-04
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Генератор списка с условиями

JOHN_16, спасибо. Не знал, что if можно использовать перед for, а так же о возможности использования else…

Офлайн

#4 Дек. 4, 2013 08:50:20

Flicker
Зарегистрирован: 2013-06-20
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Генератор списка с условиями

a=[]
for e in range(1,100):
    if e % 2:
        e = e**2
    a.append(e)
print a
Хотя у JOHN_16 он более питоновский.
А почему не нужно ставить : в условие if в JOHN_16 варианте ?

Отредактировано Flicker (Дек. 4, 2013 08:50:58)

Офлайн

#5 Дек. 4, 2013 08:52:25

alcochtivo
Зарегистрирован: 2013-12-04
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Генератор списка с условиями

Flicker, соль задания была именно в том, чтобы написать генератор списка - в одну строку. Твой вариант тоже рабочий, но не является решением задачи… Все равно - спасибо за ответ.

Офлайн

#6 Дек. 4, 2013 13:35:07

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Генератор списка с условиями

Flicker
alcochtivo
не путайте разные схематические конструкции:
1)

A if B else C
- вернуть A если выполняется условие B, иначе вернуть C
2)
[A(X) for in B if X>Y]
- генератор, каждый элемент которого это результат выполнения некоего A(X) для X из перечисляемого типа B при условии что этот самый X больше Y ( естественно тут может быть любое другое выражение,функция и тп.)



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version