— Функция
—
1.
2.
3.
Затем, когда мы оборачиваем это в
pow(x, y)
возвращает x, возведённое в степень y.—
map(function, iterable1, iterable2)
применяет заданную функцию (в данном случае pow()
) к элементам двух (или более) итерируемых объектов (в данном случае списков [1, 2, 3]
и [2, 3, 4]
).map(pow, [1, 2, 3], [2, 3, 4])
выполнит следующее:1.
pow(1, 2)
возвращает 1^2 = 12.
pow(2, 3)
возвращает 2^3 = 83.
pow(3, 4)
возвращает 3^4 = 81.Затем, когда мы оборачиваем это в
list()
, то получаем полный список:>>> list(map(pow, [1, 2, 3], [2, 3, 4])) # 1 ** 2, 2 ** 3, 3 ** 4
... [1, 8, 81]
functools.reduce(функция, итерируемый_объект, [исходное_значение, ]/)
reduce()
применяет функцию
к итерируемому_объекту
, и возвращает одиночный результат. Она разрешает также передавать необязательный третий аргумент исходное_значение
, который фактически помещается перед элементами последовательности и служит начальным значением, а также стандартным результатом, когда последовательность пуста.from functools import reduce
# Суммируем элементы списка
reduce((lambda x, у: х + у) , [1, 2, 3, 4]) # 10
но
from functools import reduce
reduce((lambda x, у: х + у) , [1, 2, 3, 4], 1) # 11
Какой из методов pandas удалит записи с пропусками? #размяться
Anonymous Quiz
76%
pd.dropna()
8%
pd.fillna()
5%
pd.isna()
10%
pd.notna()
Что выведет код?
Anonymous Quiz
61%
[115, 112, 97, 109]
5%
115, 112, 97, 109
18%
['a', 'm', 'p', 's']
16%
Error
Встроенная функция
одиночного символа:
Ниже приведен пример верного синтаксиса:
ord()
в Python возвращает целочисленную кодовую точкуодиночного символа:
ord('s') # 115
mар()
передает каждый элемент итерируемого объекта некой функции и собирает все результаты. Однако при передаче функции в качестве аргумента map()
скобки опускаются, потому код выше вызовет ошибку:Ниже приведен пример верного синтаксиса:
counters = [1, 2, 3, 4]
def inc(x): return х + 10 # Прибавим каждому элементу 10
list(map(inc, counters)) # [11, 12, 13, 14]
Что выведет код?
Anonymous Quiz
6%
603
22%
[100, 201, 301]
66%
[100, 200, 300, 101, 201, 301, 102, 202, 302]
6%
Error
Списковые включения
Их простейшая форма предусматривает указание накапливающего выражения и одиночной конструкции for:
Несмотря на необязательность всех остальных частей, они позволяют выражать более развитые итерации — в списковом включении допускается записывать любое количество вложенных циклов
Когда конструкции
Эффект будет таким же, как у показанного ниже существенно более многословного
эквивалента:
Их простейшая форма предусматривает указание накапливающего выражения и одиночной конструкции for:
[ выражение for цель in итерируемый_объект ]
Несмотря на необязательность всех остальных частей, они позволяют выражать более развитые итерации — в списковом включении допускается записывать любое количество вложенных циклов
for
, каждое из которых может иметь необязательную ассоциированную проверку if
, действующую в качестве фильтра. Общая структура списковых включений выглядит следующим образом: [ выражение for цель1 in итерируемый_объект1 if условие1
for цель2 in итерируемый_объект2 if условие2 . . .
for цельN in итерируемый_объектN if условиеN ]
Когда конструкции
for
вкладываются внутри спискового включения, они работают подобно эквивалентным вложенным операторам цикла for
:res = [х + у for х in [0, 1, 2] for у in [100, 200, 300]]
res # [100, 200, 300, 101, 201, 301, 102, 202, 302]
Эффект будет таким же, как у показанного ниже существенно более многословного
эквивалента:
res = []
for x in [0, 1, 2]:
for у in [100, 200, 300]:
res.append(x + y)
print(res) # [100, 200, 300, 101, 201, 301, 102, 202, 302]
Это списковое включение комбинирует четные числа от 0 до 4 с нечетными числами от 0 до 4, поскольку
range()
генерирует ряд чисел, НЕ ВКЛЮЧАЯ 5. Конструкции if
отфильтровывают элементы на каждой итерации. Вот эквивалентный код на основе операторов:res == []
for х in range(5) :
if x % 2 == 0:
for у in range(5) :
if у % 2 == 1:
res.append(x, y)
res # [(0, 1), (0, 3), (2, 1), (2, 3), (4, 1), (4, 3)]
Мы всегда можем индексировать по строкам и столбцам внутри строк с использованием нормальных операций индексации:
Cписковые включения являются мощным инструментом для обработки таких структур, потому что они автоматически просматривают строки и столбцы. Скажем, хотя такая структура хранит матрицы по строкам, для сбора значений второго столбца мы можем просто проходить по строкам и извлекать желаемый столбец или проходить по позициям в строках с индексаций в ходе дела:
M = [[1, 2, 3],
[4, 5, 6],
[7, 8, 9]]
М[1] # [4, 5, 6]
М[1][2] # 6 (Строка 2, элемент 3)
Cписковые включения являются мощным инструментом для обработки таких структур, потому что они автоматически просматривают строки и столбцы. Скажем, хотя такая структура хранит матрицы по строкам, для сбора значений второго столбца мы можем просто проходить по строкам и извлекать желаемый столбец или проходить по позициям в строках с индексаций в ходе дела:
[row[1] for row in M] # [2, 5, 8]
С применением функции
range()
генерируется список смещений и производится индексация с одинаковыми номерами строк и столбцов, выбирающая М[0][0], затем М[1][1]
и т.д. Во второй строке индекс столбца уравновешивается для извлечения М[0][2]
, М[1][1]
и т.д. (мы предполагаем, что матрица имеет равное количество строк и столбцов):M = [[1, 2, 3],
[4, 5, 6],
[7, 8, 9]]
# Диагональ
[M[i][i] for i in range(len(M))] # [1, 5, 9]
# Обратная диагональ
[M[i][len(M)-1-i] for i in range(len(M))] # [3, 5, 7]