Python Урок 15

## Функция map

Функция map принимает два аргумента:

1. Функцию.

2. Итерированную последовательность.

Функция map берет функцию, которую приняла в качестве параметра и применяет ее к каждому элементу в той последовательности, которые мы так же передали в параметры нашей функции map.

### Работа с фикцией

С помощью функции map превратим каждое число из строкового типа в в целое число.

Числа строкового типа ("Цифры.txt"):

```
9
1999 2000
3000 5556
6667 0909
9111 8800
5553 5350
7912 7902
7971 2012
1882 1842
1933 1917

```

Пример конвертации числа из строкового типа в целые числа:

```
with open("Цифры.txt") as f: # Открывает файл и сокращает до f.
     n = int(f.readline()) *# В переменной n cчитает первую строчку и превратили в целое число.*
     for i in range(n): *# Перебирает количество строчек.*
         a, b = map(int, f.readline().split()) *# Считывает числа в две переменные a и b. К ним поменяйте функцию map, в качестве параметров в скобках укажите ту функцию, которую будете применять(int) к нашей итерируемой последовательности, к каждой строке нашего файла, и так как у вас в сорочке два числа, вы разделаете его методом split.*
         print(a, b)

 *# С помощью функции map, вы взяли вcтроиную функцию int и применяли ко всей нашей последовательности.*

```

Вы можете с помощью функции map, использовать самописные функции и так же их применить к итерируемой последовательности.

Более того вы можете использовать функцию map и предавать в качестве параметра нескольким итерируемым последовательностям.

```
def f(a, b): *# Создаем фикцию f, она принимает на себя число a и b.*
    return a * b *# Функция f будет возвращать произведение двух чисел a \* b.*

s = map(f, [2, 4, 6], [1, 3, 5]) *# В переменной s, запишите фикцию map, которая будет применять функцию f к кому-то списку чисел. Сделаем боле большой пример, передадим функцию map два списка чисел.*
print(list(s)) *# Преобразовываем в список с помощью функции list.*

 *# Программа перемножила элементы двух списков и записала в новый список.*

```

Если одно из последовательностей будет меньшей длины, например: [2, 4, 6] и [1, 3], он перемножит то количество элементов, которая находиться в списке меньшей длины.

```
def f(a, b): *# Создаем фикцию f, она принимает на себя число a и b.*
    return a * b *# Функция f будет возвращать произведение двух чисел a \* b.*

s = map(f, [2, 4, 6], [1, 3]) *# В переменной s, запишите фикцию map, которая будет применять функцию f к кому-то списку чисел. Сделаем боле большой пример, передадим функцию map два списка чисел.*
print(list(s)) *# Преобразовываем в список с помощью функции list.*

 *# Программа перемножила элементы двух списков и записала в новый список.*

```

### Функция lambda и map

```
def f(a, b): *# Создаем фикцию f, она принимает на себя число a и b.*
    return a * b *# Функция f будет возвращать произведение двух чисел a \* b.*

s = map(lambda x: x + 15, (2, 4, 6)) *# Передайте и запишите фикцию lambda и кортеж.*
print(list(s))

 *# Программа прибавить 15 к элементам и записала в новый список.*

```

## Функция filter

Фикция filter используется для фильтрации элементов последовательности. То есть она получает в качестве аргумента функцию, которая возвращает True или False, и последовательность которая она применяет эту фикцию фильтрации, ту последовательности элементы которые она будет фильтровать.

### Работа с функцией

Вы опишите функцию f, которая из числа будет возвращать только четные числа.

```
def f(a): *# Создаем фикцию f, она принимает на себя число a.*
    if a % 2 == 0: *# Если число a будет четное, то программа его возвращает.*
        return a

s = filter(f, (2, 4, 6)) *# Функции filter передайте фикцию f и передайте последовательность.*
print(list(s))

 *# Программа вернула только четные числа из нашей последовательности.*

```

### Функция lambda и filter

```
s = filter(lambda x: (x % 2 == 0), (2, 4, 6)) *# Функции filter передайте фикцию labda и возвращаем условие(x % 2 == 0) на четность и передайте последовательность.*
print(list(s))

 *# Программа вернула только четные числа из нашей последовательности.*

```

## Функция reduce

Функция reduce так же получает функцию и последовательность, применяет эту функцию к элементам последовательности и возвращает одно значение.

```
from functools import reduce
print(reduce(lambda a, b: a * b, (50, 57, 89, 12, 100))) *# Функция reduce вернет произведение всех чисел в нашей последовательности.*

```

## Функция zip

Функция zip объединяет в кортежи несколько итерируемых последовательностей.

```
a = [1, 2, 3, 4, 5, 6]
b = "abcdef"
result = zip(a, b)
print(list(result))

 *# Программа сгруппировала из каждой последовательности и запихнула в кортеж. Сгруппировал первый элемент с первый элементом и т.д.*

```