Оператор in вхождения/членства элемента в Python
Оператор in и отрицание not in проверяет наличие элемента в последовательности. Выражение x in s принимает значение True , если x является членом s , и False в противном случае.
Выражение x not in s возвращает отрицание наличие элемента x в s .
Все встроенные последовательности и типы множеств set / frozenset поддерживают эту операцию, а также словарь, для которого проверяется, имеет ли словарь данный ключ.
Для типов контейнеров, таких как list , tuple , set , frozenset , dict или collections.deque , выражение x in y эквивалентно вызову any(x is e or x == e for e in y)
Для строковых и байтовых типов x in y имеет значение True тогда и только тогда, когда x является подстрокой y . Эквивалентный тест y.find(x) != -1 . Пустые строки всегда считаются подстрокой любой другой строки, поэтому » in ‘abc’ возвращает True .
Для определяемых пользователем классов, которые имеют метод __contains__() , выражение x in y возвращает True , если y.__contains__(x) возвращает истинное значение, и False в противном случае.
Для определяемых пользователем классов, которые НЕ определяют метод __contains__() , но определяют __iter__() , выражение x in y имеет значение True , если некоторое значение z создается при итерации по y и для которого выражение x is z or x == z истинно.
Наконец, используется протокол итерации старого стиля: если класс определяет метод __getitem__() , выражение x in y возвращает True тогда и только тогда, когда существует неотрицательный целочисленный индекс i , такой что x is y[i] or x == y[i] и ни один из младших целочисленных индексов не вызывает исключение IndexError .
Оператор not in имеет значение обратной истинности in .
Примеры использования in , тестирование наличия элемента:
Вхождение/наличие элемента в список, кортеж множество
>>> x = [1, 2, 3, 4, 5, 6, 7, 8] >>> 5 in x # True >>> 5 not in x # False >>> 0 in x # False >>> 0 not in x # True
Вхождение/наличие подстроки в строке
>>> x = 'возвращает отрицание наличие элемента' >>> 'отрицание' in x # True >>> 'наличие' not in x # False >>> x = 'абракадабра' >>> 'б' in x # True >>> 'б' not in x # False >>> 'н' in x # False >>> 'у' not in x # True
Вхождение/наличие ключа в словаре
>>> x = 'one':1, 'two':2, 'three':3, 'four':4> >>> 'one' in x # True >>> 'one' not in x # False >>> 'five' in x # False >>> 'five' not in x # True
№8 Операторы в Python / Уроки по Python для начинающих
Операторами пользуются для выполнения операций с переменными и значениями.
Python делит операторы на следующие группы:
- Арифметические операторы
- Операторы присваивания
- Операторы сравнения
- Логические операторы
- Операторы тождественности
- Операторы принадлежности
- Побитовые операторы
Арифметические операторы в Python
Арифметические операторы используются с числовыми значениями для выполнения общих математических операций:
| Оператор | Значение | Пример |
|---|---|---|
| + | добавление | 4 + 5 |
| — | вычитание | 8 — 3 |
| * | умножение | 5 * 5 |
| / | деление | 4 / 2 |
| % | остаток от деления | 7 % 2 |
| ** | возведение в степень | 2 ** 3 |
| // | целочисленное деление | 15 // 4 |
Операторы присваивания в Python
Операторы присваивания используются для присваивания значений переменным:
| Оператор | Пример | Так же как |
|---|---|---|
| = | x = 5 | x = 5 |
| += | x += 3 | x = x + 3 |
| -= | x -= 3 | x = x — 3 |
| *= | x *= 3 | x = x * 3 |
| /= | x /= 3 | x = x / 3 |
| %= | x %= 3 | x = x % 3 |
| //= | x //= 3 | x = x // 3 |
| **= | x **= 3 | x = x ** 3 |
| &= | x &= 3 | x = x & 3 |
| |= | x |= 3 | x = x | 3 |
| ^= | x ^= 3 | x = x ^ 3 |
| >>= | x >>= 3 | x = x >> 3 |
| x | x = x |
Операторы сравнения в Python
Операторы сравнения используются для сравнения двух значений:
| Оператор | Значение | Пример |
|---|---|---|
| == | равно | x == y |
| != | не равно | x != y |
| > | больше чем | x > y |
| меньше чем | x < y | |
| >= | больше чем или равно | x >= y |
| меньше чем или равно | x |
Логические операторы в Python
Логические операторы используются для объединения условных операторов:
| Оператор | Значение | Пример |
|---|---|---|
| and | Возвращает значение True если оба утверждения верны | x < 5 and x < 10 |
| or | Возвращает True если одно из утверждений верно | x < 5 or x < 4 |
| not | Меняет результат, возвращает False если результат True | not(x < 5 and x < 10) |
Операторы тождественности в Python
Операторы тождественности используются для сравнения объектов. Являются ли они одним и тем же объектом с одинаковым местоположением в памяти:
| Оператор | Значение | Пример |
|---|---|---|
| is | Возвращает true если переменные являются одним объектом | x is y |
| is not | Возвращает true если переменные разные | x is not y |
Операторы принадлежности в Python
Операторы принадлежности используются для проверки того, представлена ли последовательность в объекте:
| Оператор | Значение | Пример |
|---|---|---|
| in | Возвращает True если последовательность присутствует в объекте | x in y |
| not in | Возвращает True если последовательность не присутствует в объекте | x not in y |
Побитовые операторы в Python
Побитовые операторы используются для работы в битовом (двоичном) формате:
| Оператор | Название | Значение |
|---|---|---|
| & | И | Устанавливает каждый бит в 1, если оба бита 1 |
| | | Или | Устанавливает каждый бит в 1 если один из двух битов 1 |
| ^ | только или | Устанавливает каждый бит в 1 если только один из битов 1 |
| ~ | Не | Переставляет все биты |
| Сдвиг влево | Сдвигает влево на количество бит указанных справа | |
| >> | Сдвиг вправо | Сдвигает вправо на количество бит указанных справа |
- ТЕГИ
- Уроки Python для начинающих
ОПЕРАТОРЫ ПРИНАДЛЕЖНОСТИ В PYTHON
В Python существует два оператора принадлежности: in и not in.
Эти операторы проверяют, является ли значение частью какой либо последовательности: строки, списка, кортежа, словаря.
Оператор «in»
Возвращает True, если значение присутствует в последовательности, иначе возвращает False.
Пример со строкой:
a = "b" in "abc" print(a)
True
Пример со списком:
a = 7 in [3, 4, 5] print(a)
False
Оператор «not in»
Возвращает True, если значения нет в последовательности. Если значение присутствует в последовательности, то возвращает False. Пример:
a = 5 not in (2, 3, 4) print(a)
Операторы и выражения¶
Большинство предложений (логических строк) в программах содержат выражения. Простой пример выражения: 2 + 3 . Выражение можно разделить на операторы и операнды.
Операторы – это некий функционал, производящий какие-либо действия, который может быть представлен в виде символов, как например + , или специальных зарезервированных слов. Операторы могут производить некоторые действия над данными, и эти данные называются операндами. В нашем случае 2 и 3 – это операнды.
Операторы¶
Кратко рассмотрим операторы и их применение:
Обратите внимание, вычислить значения выражений, данных в примерах, можно также используя интерпретатор интерактивно. Например, для проверки выражения 2 + 3 воспользуйтесь интерактивной командной строкой интерпретатора Python:
>>> 2 + 3 5 >>> 3 * 5 15
Операторы и их применение
Можно составлять произвольные цепочки сравнений: 3 < 5 < 7 даёт True .
Краткая запись мат. операций и присваивания¶
Зачастую результат проведения некой математической операции необходимо присвоить переменной, над которой эта операция производилась. Для этого существуют краткие формы записи выражений:
Вы можете записать:
a = 2; a = a * 3
a = 2; a *= 3
Обратите внимание, что выражения вида “ переменная = переменная операция выражение ” принимает вид “ переменная операция = выражение ”.
Порядок вычисления¶
Если имеется выражение вида 2 + 3 * 4 , что производится раньше: сложение или умножение? Школьный курс математики говорит нам, что умножение должно производиться в первую очередь. Это означает, что оператор умножения имеет более высокий приоритет, чем оператор сложения.
Следующая таблица показывает приоритет операторов в Python, начиная с самого низкого (самое слабое связывание) и до самого высокого (самое сильное связывание). Это означает, что в любом выражении Python сперва вычисляет операторы и выражения, расположенные внизу таблицы, а затем операторы выше по таблице.
Эта таблица взята из Справочника по языку Python (англ.) и приводится здесь для полноты описания. На практике лучше использовать скобки для группировки операторов и операндов, чтобы в явном виде указать порядок вычисления выражений. Заодно это облегчит чтение программы. Более подробно см. в разделе Изменение порядка вычисления ниже.
Приоритет операторов
| Оператор | Описание |
| lambda | лямбда-выражение |
| or | Логическое “ИЛИ” |
| and | Логическое “И” |
| not x | Логическое “НЕ” |
| in , not in | Проверка принадлежности |
| is , is not | Проверка тождественности |
| < , , >= , != , == | Сравнения |
| | | Побитовое “ИЛИ” |
| ^ | Побитовое “ИСКЛЮЧИТЕЛЬНО ИЛИ” |
| & | Побитовое “И” |
| > | Сдвиги |
| + , — | Сложение и вычитание |
| * , / , // , % | Умножение, деление, целочисленное деление и остаток от деления |
| +x , -x | Положительное, отрицательное |
| ~x | Побитовое НЕ |
| ** | Возведение в степень |
| x.attribute | Ссылка на атрибут |
| x[индекс] | Обращение по индексу |
| x[индекс1:индекс2] | Вырезка |
| f(аргументы . ) | Вызов функции |
| (выражения, . ) | Связка или кортеж [2] |
| [выражения, . ] | Список |
| Словарь |
Операторы, о которых мы не упомянули, будут объяснены в дальнейших главах.
В этой таблице операторы с равным приоритетом расположены в одной строке. Например, + и — имеют равный приоритет.
Изменение порядка вычисления¶
Для облегчения чтения выражений можно использовать скобки. Например, 2 + (3 * 4) определённо легче понять, чем 2 + 3 * 4 , которое требует знания приоритета операторов. Как и всё остальное, скобки нужно использовать разумно (не перестарайтесь) и избегать излишних, как в (2 + (3 * 4)) .
Есть ещё одно преимущество в использовании скобок – они дают возможность изменить порядок вычисления выражений. Например, если сложение необходимо произвести прежде умножения, можно записать нечто вроде (2 + 3) * 4 .
Ассоциативность¶
Операторы обычно обрабатываются слева направо. Это означает, что операторы с равным приоритетом будут обработаны по порядку от левого до правого. Например, 2 + 3 + 4 обрабатывается как (2 + 3) + 4 .
Выражения¶
Пример (сохраните как expression.py ):
length = 5 breadth = 2 area = length * breadth print('Площадь равна', area) print('Периметр равен', 2 * (length + breadth))
Вывод:
$ python expression.py Площадь равна 10 Периметр равен 14
Как это работает:
Длина и ширина прямоугольника хранятся в переменных length и breadth соответственно. Мы используем их для вычисления периметра и площади прямоугольника при помощи выражений. Результат выражения length * breadth сохраняется в переменной area , после чего выводится на экран функцией print . Во втором случае мы напрямую подставляем значение выражения 2 * (length + breadth) в функцию print .
Также обратите внимание, как Python “красиво печатает” результат. Несмотря на то, что мы не указали пробела между ‘Площадь равна’ и переменной area , Python подставляет его за нас, чтобы получить красивый и понятный вывод. Программа же остаётся при этом легкочитаемой (поскольку нам не нужно заботиться о пробелах между строками, которые мы выводим). Это пример того, как Python облегчает жизнь программисту.
Резюме¶
Мы увидели, как пользоваться операторами, операндами и выражениями. Это основные строительные блоки любой программы. Далее мы увидим, как это применить на практике.
Примечания¶
| [1] | “True” — англ. “Верно (Правда)”; “False” — англ. “Ошибочно (Ложь)”. (прим. перев.) |
| [2] | “tuple” — англ. “кортеж” (прим. перев.) |
