Сравнение множеств осуществляется с помощью стандартных операций больше (>), меньше (<) или тождественно равно (==).
Замечание. Не путайте операцию присваивания (=) и операцию сравнения (==).
Пример
Код: s l = s e t ( ' 1 2 3 4 ' ) ;
s 2 = s e t ( '1 2 3 ' ) ;
s 3 = s e t('3 4 5 6 ')
p r in t( s l> s 2 , sl< s2 , sl==s2)
p r in t( s l> s 3 , sl< s3 , sl==s3)
Результат: True F alse F alse F alse F alse F alse
Для пересекающихся и непересекающихся множеств операция сравнения всегда будет давать F a lse . True будет в случае, если одно из множеств есть точно такое же множество или оно является подмножеством (надмножеством) другого множества.
. М етоды для работы с множ ествам и Существуют аналогичные методы, позволяющие осуществлять объединение (union()), пересечение (intersection()), разность (difference()) и симметрическую разность (symmetric_difference()).
Пример
Код:
sl= set('12345') # 1 - е множество
s 2 = s e t ( 16 7 8 9 3 4 5 ') # 2-емнож ество
s 3 = s e t( ' Петров')
s= s l.u n io n (s 2 , s3); p r i n t (s) # объединение множеств
s = s l. in te rs e c tio n (s 2 ); p rin t(s ) # пересечение множеств
s = s l.d iffe re n c e (s2 ); p rin t(s ) # разность множеств
s= sl.sym m etric_difference(s2); p rin t(s ) # симметрическая разность(исключающее или) множеств
Результат: { ' 2 ' , ' 4 ' , ' П' , ' 6 ' , ' е ' , ' о ' , ' 5 ' , ' 3 ' , ' в ' , ' 7 ' , '8', 'т', '9', ’1', 'р'}
{ ' 5 ' , ’4 ’, '3'}
{ '2','1'}
{’8', '2', '6', '9', '1', '7')
Как видно из примера, операции можно производить над несколькими множествами. Также в Python предусмотрены методы сравнения:
• issubset (х) — возвращает истину, если х является надмножеством множества;
• issuperset (х) — возвращает истину, если х является подмножеством множества
Пример
Код:
s l= s e t('1234 ') ;
s2=set('123');
p r i n t ( s i . issu b se t (s2), s i . issu p e rse t (s2))
Результат: False True
Для определения количества элементов множества, так же как и для последовательностей, используется метод 1еп () .
Справка. Поскольку элементы множества не упорядочены, обращение к элементу множества не имеет смысла, можно лишь осуществить перебор элементов множества, как показано в примере.
Можно создать поверхностную копию множества, воспользовавшись аналогичным методом работы с последовательностями — сору () .
25)Динамическая типизация. Понятие о счетчике ссылок и сборке мусора. Проверка и преобразование типов данных. Удаление переменной.
. Динамическая типизация
Основным отличием языка Python от других языков программирования является то, что не нужно заранее объявлять тип переменных, их тип определяет сам «движок», причем переменные могут изменять свой тип по ходу выполнения программы. Иными словами, в нем реализована технология динамической типизации объектов.
Справка. В языках, производных от Pascal, для объявления переменных необходимо указать ключевое слово var и указать тип данных, в VBA — Dim. В случае несоответствия типов переменных, используемых в одном и том же выражении, выводится ошибка Турю Mismatch. При этом тип переменной не может быть изменен в процессе выполнения программы. Такая строгая типизация реализована во многих языках программирования, например C++, Java, Perl, FORTRAN и ряде других.
Основными свойствами динамической типизации объектов являются следующие: каждый созданный объект (в Python переменная ведет себя как объект и, по сути, является объектом) есть ссылка; тип объекта определяется типом объекта, на который идет ссылка; объект может изменять свой тип при изменении ссылки, которая указывает на другой объект. Меняя ссылку, объект изменяет свой тип.
Пример
Код:
а= '1 '; p r i n t ( t y p e (а))
а=1; p r i n t ( t y p e ( а ) )
а = 1 .1 2 5 ; p r i n t ( t y p e ( а ) )
а= [1 ,2 ,3 ]; p r i n t ( t y p e ( а ) )
Результат:
Как видно из примера, в процессе построчного выполнения программы переменная меняется свой тип.
Понятие о счетчике ссылок и сборке мусора
Как упоминалось ранее, при присвоении переменной значения другой переменной, поскольку каждая переменная является ссылкой на объект, осуществляется копирование ссылки на исходный объект. Каждый из объектов Python включает в себя счетчик ссылок, и при появлении новой ссылки значение счетчика увеличивается на единицу. Если ссылка на объект перестала существовать, то значение счетчика ссылок уменьшается на единицу. Как показано в предыдущем примере, когда переменной а присваивалось новое значение, счетчик на объект увеличивался на единицу, а счетчик предыдущего объекта уменьшался на единицу. В случае если значение счетчика становится равным нулю, Python считает, что объект является неиспользуемым, и память, отведенная для него, освобождается посредством автоматического вызова деструктора.
Такая технология (механизм) называется garbage collection, или сборкой мусора. Другими словами, если в программе больше нет ссылок на объект, то память, выделенная для хранения информации об объекте, очищается.
Справка. Структура объекта Python имеет два поля: в первом из них хранится информация о типе данных, а второе содержит значение счет- чика. При этом в процессе выполнения программы Python сам определяет, когда можно удалить объект, т.е. очистить память, и разработчику не нужно следить за необходимостью освобождать память для новых переменных.
Проверка и преобразование типов данных. Удаление переменных
Для проверки типа данных ранее мы использовали функцию type () . В сочетании с инструкцией print () она позволяет вывести тип переменной на экран (см. пример в подпараграфе 3.1.3).
Также существует еще одна функция, позволяющая проверить тип данных: isinstance (переменная, тип переменной).
Другими словами, данная функция выдает истину, если переменная соответствует указанному в качестве второго аргумента типу, и ложь — в противном случае.
Для преобразования типов данных в одном из предыдущих примеров была использована функция in t (), которая преобразовывала строку в целое число.
Также используется следующие преобразования: bytes () — преобразование в байты; b ytearray () — массив байтов.
Для удаления переменной используется инструкция del. При этом ее можно применять к нескольким переменным.
Пример
Код:
d el а
d e l d l , d2
p r i n t (a, d l, d2)
Результат:
переменные.py", lin e 47, in
p r i n t (a, d l, d2)
NameError: name 'a ' i s not defined
После удаления при обращении к переменной интерпретатор выдаст ошибку, причем остановится сразу на первой переменной (как видно из примера).
2категория
1)Групповое присваивание. Комбинированные инструкции присваивания. Групповое присваивание. Комбинированные инструкции присваивания.
Если отступ не соответствует принятому синтаксису в Python, то интерпретатор выдаст сообщение
Из примера видно, что оформление отступов является одним из важнейших синтаксических процедур при формировании программы. В Python отступ равен четырем пробелам (восьми пробелам на пишущей машинке) или табуляции. Лучший способ создавать правильные отступы — использовать IDLE Python, который автоматически устанавливает требуемый отступ при нажатии клавиши Enter, если курсор установлен после начала блока и символа «:».
Отступы играют роль объединения части текста программы в единый блок, и Pyhton воспринимает его как единое целое. Например, в Delphi для организации блока его необходимо «окружить» ключевыми словами begin... end, в php или JavaScript (JS) используются фигурные скобки при описании тела функции. В VBA условие оканчивается End If, чтобы обработчик «понимал», что данные команды, находящиеся между If и End If, должны выполняться только в этом блоке. Отступы обладают рядом преимуществ, основными из которых являются сокращение кода (не нужно объявлять начало и окончание блока) и наглядность представления. Последнее позволяет упростить восприятие программы. Подавляющее большинство программистов для удобного прочтения кода и идентификации блоков используют искусственное табулирование. В IDLE Python этого делать не нужно — все осуществляется автоматически. Это, по сути, стиль программы.
И нструкция присваивания
Практически во всех программах используется инструкция присваивания, которая также затрагивалась в той или иной форме для понимания рассматриваемых тем в предыдущих примерах, по скольку без нее практически невозможно продемонстрировать основные возможности языка Python. Присвоение переменной осуществляется с помощью оператора присваивания «=», например, литералов строк или чисел, продемонстрированных в главе 2.
Инструкция присваивания создает ссылку на объект или обновляет уже существующую переменную. Создание переменной обычно называется инициализацией и определяется присвоением литерала определенного типа данных (число, строка, список и т.п.).
Если сразу обновить переменную, то интерпретатор выведет сообщение об ошибке, что переменная не определена. Поэтому сначала нужно присвоить ей какое-то значение, например 0.
Поскольку переменная есть ссылка на объект, то инструкция присваивания формирует или меняет ссылку на объект, эта технология подробно рассмотрена в подпараграфе 3.1.4.
Также затрагивалась инструкция группового присваивания, которая одновременно может присвоить одинаковое или разное значение нескольким переменным.
Комбинированное присваивание позволяет сочетать групповое и присваивание и обновление значений переменных
При групповом присваивании числа или строки можно воспользоваться конструкцией а=Ь=число(строка)
Пример
Код:
a=b=2; p r i n t ( a , ' b)
а, Ь, с = 1 ,2 , 'И ванов'; p r i n t ( a , ' b, с)
c = d = ' С ту д ен т' ; p r i n t ( с , 1 d)
с = ' А спи ран т' ; p r i n t ( с , 1 d)
Результат:
2 2
1 2 Иванов
Студент Студент
Аспирант Студент
Такое комбинированное присвоение является одним из преимуществ Python по сравнению с другими языками программирования.
Можно присваивать последовательности и одновременно проводить операции над ними.
При выполнении группового присваивания выражение, находящееся в правой части expr , вычисляется только один раз, независимо от количества целевых ссылок a , b , c , указанных в инструкции. Каждая из целевых ссылок, в порядке следования слева направо, связывается с единственным объектом expr , как если бы несколько операций присваивания выполнялись поочередно.
Примеры
Достарыңызбен бөлісу: |