Читаем Введение в Python полностью

1 | old_list = ['1', '2', '3', '4', '5', '6', '7']

2 |

3 | new_list = []

4 | for item in old_list:

5 | new_list.append(int(item))

6 |

7 | print (new_list)

8 |

9 | [1, 2, 3, 4, 5, 6, 7]

Тот же эффект мы можем получить, применив функцию map:

1 | old_list = ['1', '2', '3', '4', '5', '6', '7']

2 | new_list = list(map(int, old_list))

3 | print (new_list)

4 |

5 | [1, 2, 3, 4, 5, 6, 7]

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

1 | def miles_to_kilometers(num_miles):

2 | """ Converts miles to the kilometers """

3 | return num_miles * 1.6

4 |

5 | mile_distances = [1.0, 6.5, 17.4, 2.4, 9]

6 | kilometer_distances = list(map(miles_to_kilometers, mile_distances))

7 | print (kilometer_distances)

[1.6, 10.4, 27.84, 3.84, 14.4]

А теперь то же самое, только используя lambda выражение:

1 | mile_distances = [1.0, 6.5, 17.4, 2.4, 9]

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 прекращает выполнение, как только достигнут конец самого короткого списка.

<p>Объектно-ориентированное программирование в Python</p>

Published: 04 November 2014

* ООП

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных