Генераторы и итераторы
все таки без продолжения никак
Генераторы списков и функция map:
Встроенная функция ord в языке Python возвращает целочисленный код ASCII единственного символа (обратной к ней является встроенная функция chr – она возвращает символ, соответствующий коду ASCII):
>>> ord(‘s’)
115
Теперь рассмотрим применение ord для нескольких значений:
>>> res = []
>>> for x in ‘spam’:
... res.append(ord(x))
...
>>> res
[115, 112, 97, 109]
>>> res = map(ord, ‘spam’)# Применить функцию к
>>> res #последовательности
[115, 112, 97, 109]
>>> res = [ord(x) for x in ‘spam’] # Применит выражение к последовательности
>>> res
[115, 112, 97, 109]
Если быть точнее, мы сгенерировали список и на выходе получили совершенно новый (одно из назначений генераторов) присвоив его начальной переменной res. То есть в res был отправлен результат выражения. Синтаксически генераторы списков заключаются в квадратные скобки!
Генераторы списков более удобны, особенно, когда требуется применить к последовательности произвольное выражение:
#1
>>> [x ** 2 for x in range(10)]
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
#2 аналог #1 только используем функцию map:
>>> map((lambda x: x ** 2), range(10))
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
Комментариев нет:
Отправить комментарий