🐍 Укус питона 🐍
3.02K subscribers
571 photos
2 videos
272 links
🐍 Канал о программировании на языке Python. Тематические уроки и лайфхаки.

👽 Админ - @it_dashka
🔊 Купить рекламу: https://telega.in/c/byteofpython

👉 Чат: @abyteofpython
👉 Поделиться с друзьями: @byteofpython
Download Telegram
Тип данных - список (list)

Списки в python это упорядоченные изменяемые наборы объектов, пронумерованных от 0. Списки могут содержать в себе объекты любого типа данных (по отдельности и вместе), или не содержать ничего.

Список можно создать с помощью ключевого слова list или просто перечислив объекты в квадратных скобках.

Во втором примере мы создали список, проитерировшись по другому объекту - строке.

Списки могут содержать в себе любое количество объектов, получить нужный можно с помощью индекса (его порядкового номера начиная с нуля).

#теория #список #list #типы_данных

Подробнее...
Тип данных - множества (set)

Множества в python - это структура данных, которые содержат неупорядоченные элементы. В отличие от строк элементы в множествах не индексируемые, а значит к ним нельзя обращаться по индексу и проводить операцию среза.

Также множества не содержат дубликаты элементов. Как показано на картинке, если создать множества с повторяющимися элементами, лишние автоматически удалится.

Множества задаются с помощью ключевого слова set или перечисления элементов в фигурных скобках. Добавить элемент в него можно с помощью метода add().

Элементы в множествах находятся в произвольном порядке, если запустить код с примера ещё раз, элементы могут напечататься в другом порядке.

#теория #множества #set #типы_данных

Подробнее...
Преобразование типов

Процесс преобразования значения переменной одного типа данных (целые числа, строки и т. д.) в другой называется преобразованием типа. Как и во многих других языках программирования преобразование бывает двух типов.

При неявном преобразовании типов, язык сам преобразует один тип данных в другой. Этот процесс не требует нашего участия. В первом примере мы складываем целое число с дробным. В данный момент, язык приводит оба типа к самому сложному из них, т.е к дробному, в результате в ответе мы получаем дробное число.

При явном преобразовании программист сам меняет тип данных, на требуемый, явно указывая тип с помощью функций str, int и float. Во втором примере мы преобразовываем строку в число с помощью функции int.

🐍 Укус питона // 💬 Чат // #типы_данных #строки #числа
Неявные преобразования

В операциях с данными могут применяться значения различных типов. Например, складываются число типа int и число типа float, смотрим код.

Оба числа в арифметических операциях должны представлять один и тот же тип. Если же два операнда операции представляют разные типы данных, то Python пытается автоматически выполнить преобразования к одному из типов в соответствии со следующими правилами:
• Если один из операндов операции представляет комплексное число (тип complex), то другой операнд также преобразуется к типу complex.
• Иначе, если один из операндов представляет тип float, то второй операнд также преобразуется к типу float. Собственно так и произошло в примере выше, где значение переменной a было преобразовано в тип float.
• Иначе, оба операнда должны представлять тип int, и в этом случае преобазование не требуется.

🐍 Укус питона // 💬 Чат // #теория #преобразование #типы
Явные преобразования

В некоторых случаях возникает необходимость вручную выполнить преобразование типов. Например, пусть у нас будет следующий код:

Мы ожидаем, что "2" + 3 будет равно 5. Однако этот код сгенерирует исключение, так как первое число на самом деле представляет строку. И мы увидим при выполнении кода что-то наподобие примера во второй части кода:

Для преобразования типов Python предоставляет ряд встроенных функций:
• int(): преобразует значение в целое число
• float(): преобразует значение в число с плавающей точкой
• str(): преобразует значение в строку

🐍 Укус питона // 💬 Чат // #теория #преобразование #типы #int #float #str
Int

Преобазуем строку в число с помощью функции int(), смотрим первый пример:

Примеры преобразований с помощью int(), смотрим второй пример:

Однако если значение не может быть преобразовано, то функция int выдаст ошибку ValueError: invalid literal for int() with base 10, смотрим третий пример:

🐍 Укус питона // 💬 Чат // #теория #преобразование #типы #int
Float

Аналогичным образом действует функция float(), которая преобразует в число с плавающей точкой, первый пример.

Примеры преобразований с помощью float(), второй пример:

Но опять же не все значения могут автоматически преобразованы в float. Так, в следующем случае Python сгенерирует ошибку, третий пример:

🐍 Укус питона // 💬 Чат // #теория #преобразование #типы #float
Str

Функция str() преобразует значение в строку, первый пример:

Функция str() может быть актуальна, например, при добавлении к строке значения другого типа. Например, в следующем случае мы получим ошибку, вторая часть кода:

Если число складывается с число, то это стандартная операция сложения чисел. Если строка складывается со строкой, то это операция объединения строк. Но каким образом выполнить операцию сложения по отношение к строке и числу, Python не знает. И если мы в данном случае мы хотим выполнить операцию объединения строк, то число можно привести к строке с помощью функции str(), третья часть кода:

🐍 Укус питона // 💬 Чат // #теория #преобразование #типы #str
Сравнение последовательностей произвольных типов.

Класс SequenceMatcher() сравнивает две последовательности любых видов, если их элементы являются хешируемыми. Он использует алгоритм для идентификации наиболее длинных непрерывных блоков соответствия из последовательностей, устраняя "мусорные" значения, которые не вносят вклад в реальные данные.

Функция get_opcodes() класса SequenceMatcher() возвращает список инструкций для изменения первой последовательности, чтобы она соответствовала второй. Инструкции кодируются в виде пятиэлементных кортежей, включая строковую инструкцию и две пары индексов start и stop в последовательности, обозначаемые как i1, i2 и j1, j2.

В этом примере сравниваются два списка целых чисел, в котором используется метод get_opcodes() для получения инструкций по преобразованию исходного списка в более новую версию. Изменения примен. в обратном порядке, поэтому индексы списка остаются верными после добавл. и удаления элементов.

🐍 Укус питона // 💬 Чат // #теория #модули #difflib #типы