2 | kilometer_distances = list(map(lambda x: x * 1.6, mile_distances))
3 |
4 | print (kilometer_distances)
[1.6, 10.4, 27.84, 3.84, 14.4]
Функция mapможет быть так же применена для нескольких списков, в таком случае функция-аргумент должна принимать количество аргументов, соответствующее количеству списков:
1 | l1 = [1,2,3]
2 | l2 = [4,5,6]
3 |
4 | new_list = list(map(lambda x,y: x + y, l1, l2))
5 | print (new_list)
[5, 7, 9]
Если же количество элементов в списках совпадать не будет, то выполнение закончится на минимальном списке:
1 | l1 = [1,2,3]
2 | l2 = [4,5]
3 |
4 | new_list = list(map(lambda x,y: + y, l1, l2))
5 |
6 | print (new_list)
[5,7]
Функция filter() в Python:
Функция filterпредлагает элегантный вариант фильтрации элементов последовательности. Принимает в качестве аргументов функцию и последовательность, которую необходимо отфильтровать:
1 | mixed = ['мак', 'просо', 'мак', 'мак', 'просо', 'мак', 'просо', 'просо', 'просо', 'мак']
2 | zolushka = list(filter(lambda x: x == 'мак', mixed))
3 | print (zolushka)
['мак', 'мак', 'мак', 'мак', 'мак']
Обратите внимание, что функция, передаваемая в filterдолжна возвращать значение True / False, чтобы элементы корректно отфильтровались.
Функция reduce() в Python:
Функция reduceпринимает 2 аргумента: функцию и последовательность. reduce() последовательно применяет функцию-аргумент к элементам списка, возвращает единичное значение. Обратите внимание в Python 2.x функция reduce доступна как встроенная, в то время, как в Python 3 она была перемещена в модуль functools.
Вычисление суммы всех элементов списка при помощи reduce:
1 | from functools import reduce
2 | items = [1,2,3,4,5]
3 | sum_all = reduce(lambda x,y: x + y, items)
4 |
5 | print (sum_all)
15
Вычисление наибольшего элемента в списке при помощи reduce:
1 | from functolls import reduce
2 | items = [1, 24, 17, 14, 9, 32, 2]
3 | all_max = reduce(lambda a,b: a if (a > b) else b, items)
4 |
5 | print (all_max)
32
Функция zip() в Python:
Функция zipобъединяет в кортежи элементы из последовательностей переданных в качестве аргументов.
1 | a = [1,2,3]
2 | b = "xyz"
3 | c = (None, True)
4 |
5 | res = list(zip(a, b, c))
6 | print (res)
[(1, 'x', None), (2, 'y', True)]
Обратите внимание, что zipпрекращает выполнение, как только достигнут конец самого короткого списка.
Объектно-ориентированное программирование в Python
Published: 04 November 2014
* ООП
Объектно-ориентированным программированиемназывается такой подход к программированию, в котором используются понятия классаи объекта. Говоря проще, когда перед нами стоит задача запрограммировать какой-либо объект, то намного легче сделать это описав этот объект, чем написав ряд функций.
Терминология объектно-ориентированного программирования:
* Класс (Class): Определенный программистом прототип программируемого объекта с набором атрибутов (переменных и методов), которые описывают данный объект. Доступ к аттрибутам и методам осуществляется через точку
* Переменная класса (Class variable): Переменная, доступная для всех экземпляров данного класса. Определяется внутри класса, но вне любых методов класса.
* Экземпляр класса (Instance): Отдельный объект-представитель определенного класса.
* Переменная экземпляра класса (Instance variable): Переменная определенная внутри медота класса, принадлежащая только к этому классу.
* Метод (Method): Особая функция, определенная внутри класса.
* Наследование (Inheritance): Передача аттрибутов и методов родительского класса дочерним классам.
* Перегрузка функций (Function overloading): Изменение работы метода, унаследованного дочерним классом от родительского класса.
* Перегрузка операторов (Operator overloading): Определение работы операторов с экземплярами данного класса.
Создание класса в Python:
Определение классаначинается с ключевого слова class, после него следует имя класса и двоеточие. Теперь с отступом можно описывать сам класс.
class Elevator: """ Simple elevator class """# Переменная класса. Сколько людей было перевезено ВСЕМИ лифтами people_lifted = 0 # Конструктор класса. Вызывается при создании экземпляра класса def __init__(self,name): self.name = name # переменная класса. Количество людей перевезенных КОНКРЕТНЫМ лифтом self.people_lifted = 0 # Метод перевозки людей def lift(self): print ("Lifted someone") # Увеличиваем количество людей перевезенных ЭТИМ лифтом self.people_lifted += 1 # Увеличиваем количество людей перевезенных ВСЕМИ лифтами Elevator.people_lifted +=1 # Метод печатающий информацию о конкретном лифте def info(self):
print (self.name, "lifted", self.people_lifted, "people out of", Elevator.people_lifted)
Читать дальше