Цепочки сравнений

Распространенная ситуация: проверка того, что переменная находится в заданных пределах. Можно было бы использовать логический оператор and: Однако Python предоставляет нам синтаксическое удобство, которое выглядит более «математичным». Такая запись и короче, и понятнее: В качестве операторов сравнения могут быть любые из списка в любых сочетаниях: Т.е. запись вида a < b > c вполне законна,…

Итераторы и генераторы

В чем разница между итератором и генератором? Этот вопрос можно часто услышать на собеседованиях. Итератор – более общая концепция, чем генератор. Итератор – это интерфейс доступа к элементам коллекций и потоков данных. Он требует реализации единственного метода – «дай мне следующий элемент». Если вы пишите свой итератор на Python 3 вам нужно реализовать в классе…

Python: is. Равенство и эквивалентность

Новички часто путаются в конструкциях is и ==. Давайте разберемся, что к чему. Сразу к сути: == (и его антагонист !=) применяются для проверки равенства (неравенства) значения двух объектов. Значение, это непосредственно то, что лежит в переменной. Значение числа 323235 – собственно число 323235. Тавтология. Но на примерах станет яснее. Оператор is (и его антагонист…

Множества в Python

Множество (англ. «set«) – неупорядоченная коллекция из уникальных (неповторяющихся) элементов. Элементы множества в Python должны быть немутабельны (неизменяемы), хотя само содержимое множества может меняться: можно добавлять и удалять элементы из множества. О неизменяемых множествах написано в конце этой статьи. CPython: внутри множества реализованы как хэш-таблицы, в которых есть только ключи без значений и добавлены некоторые…

Звезды в Python

Звездочка (этот символ называется «астериск») – один из самых многоликих операторов в Python. Едва ли хватит пальцев руки, чтобы перечислить все его применения. Давайте по порядку. Умножение и размножение Самое простое применение одиночного астериска: умножение чисел. Двойного – возведение числа в степень. Если мы умножим список (или кортеж) на целое число, то получим новый список…