Skip to content

Latest commit

 

History

History
364 lines (257 loc) · 17.1 KB

lesson5.md

File metadata and controls

364 lines (257 loc) · 17.1 KB

Лекция 5: Range, list comprehension, sum, max, min, len, sorted, all, any. Работа с файлами

range

range() — функция, создающая последовательность чисел, чаще всего применяется в циклах for и его производных.

Принимает до 3 параметров. Один обязательный, и два вспомогательных.

Если введен только один параметр, то генерирует последовательность чисел от 0 до указанного числа, не включительно. Например:

for i in range(5):
    print(i)
0
1
2
3
4

Если введены два параметра, то range их воспринимает как начало и конец, конец не включительно.

for i in range(2, 6):
    print(i)
2
3
4
5

Если введены три параметра, то третий воспринимается как шаг между элементами В качестве шага можно передавать отрицательные значения!!

for i in range(2, 10, 3):
    print(i)
2
5
8

На самом деле для цикла фор существует интересная особенность, если нам нет необходимости перебирать какие-либо элементы, то мы всегда можем указать символ _ вместо перебираемого объекта

for _ in range(3):
    print('It will be printed 3 times')

'It will be printed 3 times'
'It will be printed 3 times'
'It will be printed 3 times'

Встроенные Методы в Python: Работа с Данными и Коллекциями

Python - это язык программирования, который предоставляет множество встроенных (built-in) методов для работы с данными и коллекциями. Эти методы упрощают манипуляции с данными и делают код более читаемым и эффективным. В этой статье мы рассмотрим несколько встроенных методов Python, включая all, any, sorted, len, sum, min и max.

Методы для Работы с Коллекциями

min() и max()

Метод min() находит наименьший элемент в числовой коллекции, а метод max() - наибольший. Рассмотрим пример:

numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
min_value = min(numbers)  # Минимум: 1
max_value = max(numbers)  # Максимум: 9

sum()

Метод sum() вычисляет сумму всех элементов числовой коллекции, такой как список или кортеж. Рассмотрим пример:

numbers = [1, 2, 3, 4, 5]
total = sum(numbers)  # Сумма: 15

len()

Метод len() используется для определения длины (количества элементов) коллекции, включая строки, списки, кортежи и другие. Рассмотрим примеры:

text = "Привет, мир!"
length = len(text)  # Длина строки: 12

numbers = [1, 2, 3, 4, 5]
length = len(numbers)  # Длина списка: 5

sorted()

Метод sorted() сортирует элементы коллекции в порядке возрастания (по умолчанию) и возвращает новый список. Он также может принимать дополнительный аргумент reverse=True для сортировки в обратном порядке. Рассмотрим пример:

numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
sorted_numbers = sorted(numbers)  # [1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]

all() и any()

Метод all() проверяет, все ли элементы коллекции истинны (после преобразования в булеан будут иметь значение True). Если все элементы истинны, он возвращает True, иначе - False. Рассмотрим пример:

numbers = [1, 2, 3, 4, 5]
result = all(x > 0 for x in numbers)  # True, так как все числа положительные

Метод any() проверяет, есть ли хотя бы один истинный элемент в коллекции. Если хотя бы один элемент истинен, он возвращает True, иначе - False. Рассмотрим пример:

numbers = [1, 2, 3, -1, -2]
result = any(x < 0 for x in numbers)  # True, так как есть отрицательные числа

Практика:

  1. Найти наибольшее и наименьшее значение в списке
  2. Найти среднее арифметическое из списка чисел
  3. Найти второе по величине значение в списке ( [10, 2, 5, 8, 0] -> результат 8)
  4. Проверить является ли список уже отсортированным.
  5. Используя any, выяснить есть ли в списке положительные числа
  6. Используя all, выяснить все ли числа в списке четные
  7. Заданы два числа, вывести все нечетные значения между ними
  8. Заданы два числа, найти сумму всех значений между ними
  9. Заданы два числа, вывести все числа между ними в обратном порядке
  10. Сложная! Используя цикл for, range и свойства списков найти заданное число Фибоначчи

Что такое List Comprehension?

Python - это язык программирования, который известен своей читаемостью и эффективностью в написании кода. Одним из мощных инструментов, предоставляемых Python, является List Comprehension, или генераторы списков. Это синтаксическая конструкция, которая позволяет создавать списки более компактно и эффективно.

List Comprehension (генераторы списков) - это способ создания новых списков в Python на основе существующего списка или другой итерируемой последовательности. Этот метод позволяет сократить количество кода и улучшить читаемость, особенно при создании списков на основе условий.

Синтаксис List Comprehension выглядит следующим образом:

new_list = [expression for item in iterable if condition]

Где:

  • new_list - новый список, который будет создан.
  • expression - выражение, которое определяет, какие элементы будут включены в новый список.
  • item - переменная, которая принимает каждый элемент из итерируемой последовательности.
  • iterable - итерируемая последовательность, например, список или кортеж.
  • condition (опционально) - условие, которому должен соответствовать элемент, чтобы быть включенным в новый список.

Примеры использования List Comprehension

Создание списка чисел от 0 до 9:

numbers = [x for x in range(10)]
# Результат: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

Создание списка квадратов чисел от 0 до 9:

squares = [x ** 2 for x in range(10)]
# Результат: [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

Фильтрация элементов из списка:

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_numbers = [x for x in numbers if not x % 2]
# Результат: [2, 4, 6, 8, 10]

Преобразование строк в список слов и превращение их в маленькие буквы:

text = "Привет, мир! Давайте изучать Python."
words = [word.lower() for word in text.split()]
# Результат: ['привет,', 'мир!', 'давайте', 'изучать', 'python.']

Вложенные List Comprehension

List Comprehension также поддерживает вложенные конструкции, позволяя создавать списки более сложной структуры.

Создание матрицы:

matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
flattened_matrix = [x for row in matrix for x in row]
# Результат: [1, 2, 3, 4, 5, 6, 7, 8, 9]

Получение диагонали матрицы:

matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
diagonal = [matrix[i][i] for i in range(len(matrix))]
# Результат: [1, 5, 9]

Практика (все задания предполагают использование компрехеншенов):

  1. Создать список чисел от 5 до 100
  2. Создать список нечетных чисел от 5 до 100
  3. Есть список слов, создать список который будет содержать первые буквы из каждого слова
  4. Не связано с компрехеншенами. Из прошлого списка сделать строку
  5. Есть список чисел. Создать список на его основе, но взять только отрицательные значения
  6. Создать список квадратов чисел в указанном пользователем диапазоне

Работа с Файлами в Python: Чтение и Запись

Работа с файлами - важная часть программирования в Python.

Открытие и Закрытие Файла

Прежде чем начать работать с файлом, необходимо его открыть с помощью функции open(). Эта функция принимает два аргумента: имя файла и режим доступа (чтение, запись и т. д.). Например, чтобы открыть файл для чтения, используйте следующий код:

file = open("example.txt", "r")

После завершения работы с файлом, его следует закрыть с помощью метода close():

file.close()

Закрытие файла важно, чтобы освободить ресурсы и обеспечить целостность данных. (на самом деле в реальности close применяется редко и ниже я опишу почему)

Чтение из Файла

Чтение всего файла

Для чтения всего содержимого файла можно использовать метод read():

file = open("example.txt", "r")
content = file.read()
file.close()

Чтение по строкам

Чтение файла по строкам можно выполнить с помощью итерации:

Файл для питона это перебираемый объект!

file = open("example.txt", "r")
for line in file:
    print(line)
file.close()

Чтение определенного количества символов

Можно прочитать определенное количество символов из файла с помощью метода read() с аргументом:

file = open("example.txt", "r")
partial_content = file.read(50)  # Прочитать первые 50 символов файла
file.close()

Запись в Файл

Запись текста в файл

Для записи текста в файл используйте режим доступа "w" (запись) с функцией write():

file = open("example.txt", "w")
file.write("Привет, мир!")
file.close()

Если файл не существует, он будет создан. Если файл существует, его содержимое будет заменено.

Добавление текста в файл

Чтобы добавить текст к существующему файлу, используйте режим доступа "a" (добавление):

file = open("example.txt", "a")
file.write("\nДополнительная строка")
file.close()

Автоматическое Закрытие Файла (Контекстный менеджер)

Python предоставляет удобный способ автоматического закрытия файла после завершения работы с ним, используя контекстный менеджер (with):

Вот этот способ используется на практике гораздо чаще чем обычный open и close. Почему эта магия так работает, расскажу дальше по курсу

with open("example.txt", "r") as file:
    content = file.read()
# Файл автоматически закроется после завершения блока with

Работа с Бинарными Файлами

Все вышеупомянутые операции могут быть выполнены как с текстовыми, так и с бинарными файлами. Для работы с бинарными файлами используются режимы доступа "rb" (чтение бинарного файла) и "wb" (запись бинарного файла).

Бинарные файлы это все файлы которые нельзя прочитать как текст (картинки, исполняемые файлы итд.)

# Чтение бинарного файла
with open("binary_file.bin", "rb") as file:
    binary_data = file.read()

# Запись бинарного файла
with open("binary_file.bin", "wb") as file:
    binary_data = b'\x00\x01\x02\x03\x04'
    file.write(binary_data)

Практика:

  1. Чтение файла и вывод его содержимого: Cоздайте текстовый файл sample.txt с несколькими строками текста. Написать программу, которая открывает файл и выводит его содержимое на экран.

  2. Запись в файл: Написать программу, которая запрашивает у пользователя несколько строк текста и записывает их в файл с именем output.txt.

  3. Копирование файла: Создайте два текстовых файла source.txt и destination.txt. Написать программу, которая читает содержимое source.txt и записывает его в destination.txt.

  4. Анализ файла: Создайте текстовый файл со списком чисел. Написать программу, которая читает файл, и печатает самое большое число из файла.

  5. Конвертация файлов: Создайте текстовый файл с температурами в градусах Цельсия. Написать программу, которая читает файл, конвертирует температуры в градусы Фаренгейта и записывает результаты в новый файл.

  6. Подсчет слов в файле: Написать программу, которая считает количество слов в текстовом файле.

  7. FizzBuzz: Реализовать физбаз с прошлого занятия, но записывать результаты в файл