Найти - Пользователи
Полная версия: Генератор списка с условиями
Начало » Python для новичков » Генератор списка с условиями
1
alcochtivo
Требуется помощь.. Дословно задание звучит так - “Написать генератор списка, который генерирует список от 1 до 100 и каждое нечетное число возводит в квадрат”. Не могу понять, как прописать условия. Либо все числа в квадрате, либо список получается только из нечетных в квадрате…
Объясните дураку…
Забыл уточнить - версия 2.7
JOHN_16
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]
alcochtivo
JOHN_16, спасибо. Не знал, что if можно использовать перед for, а так же о возможности использования else…
Flicker
a=[]
for e in range(1,100):
    if e % 2:
        e = e**2
    a.append(e)
print a
Хотя у JOHN_16 он более питоновский.
А почему не нужно ставить : в условие if в JOHN_16 варианте ?
alcochtivo
Flicker, соль задания была именно в том, чтобы написать генератор списка - в одну строку. Твой вариант тоже рабочий, но не является решением задачи… Все равно - спасибо за ответ.
JOHN_16
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 ( естественно тут может быть любое другое выражение,функция и тп.)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB