Python - Списки

Привет, стремящиеся программисты! Сегодня мы погружаемся в удивительный мир Python-списков. Как ваш добрый сосед-преподаватель информатики, я рад вести вас через это путешествие. Начнем с основ и постепенно перейдем к более сложным концепциям. Поверьте мне, к концу этого урока вы будете работать с списками как профи! ?

Python - Lists

Python Списки

Списки в Python — это как швейцарские армейские ножи структур данных. Они универсальны, легко использовать и чрезвычайно мощны. Представьте себе, что вы организуете вечеринку и нужно отслеживать ваших гостей. Список был бы идеальным для этого!

Создадим наш первый список:

guests = ["Алиса", "Боб", "Чарли", "Давид"]
print(guests)

Когда вы выполните этот код, вы увидите:

['Алиса', 'Боб', 'Чарли', 'Давид']

Поздравляю! Вы создали свой первый список. Но что именно здесь происходит?

Список в Python — это коллекция элементов, заключенных в квадратные скобки [], где каждый элемент отделяется запятой. Эти элементы могут быть любого типа — строками, числами, даже другими списками!

Вот еще один пример с смешанными типами данных:

mixed_list = [42, "Привет", 3.14, True, [1, 2, 3]]
print(mixed_list)

Вывод:

[42, 'Привет', 3.14, True, [1, 2, 3]]

Как видите, наш список содержит целое число, строку, число с плавающей точкой, логическое значение и даже другой список!

Доступ к значениям в списках

Теперь, когда у нас есть список гостей, как мы можем проверить, кто придет? Здесь помогает индексация. В Python индексация начинается с 0. Чтобы получить доступ к первому элементу, мы используем индекс 0.

guests = ["Алиса", "Боб", "Чарли", "Давид"]
print(guests[0])  # Первый гость
print(guests[2])  # Третий гость
print(guests[-1])  # Последний гость

Вывод:

Алиса
Чарли
Давид

Заметили, как мы использовали -1 для доступа к последнему элементу? Отрицательная индексация начинается с конца списка. Это как считать назад!

Обновление списков

Ой! Мы забыли пригласить Еву. Давайте добавим ее в наш список:

guests = ["Алиса", "Боб", "Чарли", "Давид"]
guests.append("Ева")
print(guests)

Вывод:

['Алиса', 'Боб', 'Чарли', 'Давид', 'Ева']

Метод append() добавляет элемент в конец списка. Но что если мы хотим добавить Еву между Бобом и Чарли?

guests.insert(2, "Ева")
print(guests)

Вывод:

['Алиса', 'Боб', 'Ева', 'Чарли', 'Давид', 'Ева']

У нас теперь две Евы! Давайте это исправим в следующем разделе.

Удаление элементов списка

Иногда нам нужно удалять элементы из списка. Давайте удалим лишнюю Еву:

guests = ['Алиса', 'Боб', 'Ева', 'Чарли', 'Давид', 'Ева']
guests.remove("Ева")
print(guests)

Вывод:

['Алиса', 'Боб', 'Чарли', 'Давид', 'Ева']

Метод remove() удаляет первое вхождение указанного элемента. Если мы знаем индекс, можем использовать pop():

removed_guest = guests.pop(3)
print(f"{removed_guest} не сможет прийти.")
print(guests)

Вывод:

Давид не сможет прийти.
['Алиса', 'Боб', 'Чарли', 'Ева']

Операции с списками в Python

Списки в Python имеют несколько удобных функций. Рассмотрим несколько из них:

# Конкатенация
list1 = [1, 2, 3]
list2 = [4, 5, 6]
combined = list1 + list2
print(combined)

# Повторение
repeated = [1, 2, 3] * 3
print(repeated)

# Длина
guests = ['Алиса', 'Боб', 'Чарли', 'Ева']
print(len(guests))

Вывод:

[1, 2, 3, 4, 5, 6]
[1, 2, 3, 1, 2, 3, 1, 2, 3]
4

Индексация, срезы и матрицы

Помните, как мы получали доступ к отдельным элементам? Мы также можем получить доступ к нескольким элементам сразу, используя срезы:

guests = ['Алиса', 'Боб', 'Чарли', 'Давид', 'Ева']
print(guests[1:4])  # Старт с индекса 1, до (но не включая) индекс 4
print(guests[:3])   # С начала до (но не включая) индекс 3
print(guests[2:])   # С индекса 2 до конца
print(guests[::2])  # Каждый второй элемент

Вывод:

['Боб', 'Чарли', 'Давид']
['Алиса', 'Боб', 'Чарли']
['Чарли', 'Давид', 'Ева']
['Алиса', 'Чарли', 'Ева']

Списки также могут быть использованы для создания матриц (двумерных списков):

matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
print(matrix[1][1])  # Доступ к элементу во втором ряду, второй колонке

Вывод:

5

Методы списков Python

Python предоставляет множество встроенных методов для списков. Вот таблица некоторых из них:

Метод Описание
append() Добавляет элемент в конец списка
clear() Удаляет все элементы из списка
copy() Возвращает копию списка
count() Возвращает количество элементов с указанным значением
extend() Добавляет элементы списка в конец текущего списка
index() Возвращает индекс первого элемента с указанным значением
insert() Добавляет элемент в указанную позицию
pop() Удаляет элемент в указанной позиции
remove() Удаляет первый элемент с указанным значением
reverse() Отражает порядок элементов списка
sort() Сортирует список

Попробуем несколько:

numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3]
numbers.sort()
print(numbers)
numbers.reverse()
print(numbers)
print(numbers.count(5))

Вывод:

[1, 1, 2, 3, 3, 4, 5, 5, 6, 9]
[9, 6, 5, 5, 4, 3, 3, 2, 1, 1]
2

Встроенные функции с списками

Python также предоставляет несколько встроенных функций, которые хорошо работают с списками:

numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3]
print(max(numbers))  # Максимальное значение
print(min(numbers))  # Минимальное значение
print(sum(numbers))  # Сумма всех значений

Вывод:

9
1
39

И это все, друзья! Мы прошлись по миру Python-списков, от создания до манипуляций, от простых операций до встроенных методов. Помните, практика — это ключ к совершенству, так что не стесняйтесь экспериментировать с этими концепциями.

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

Надеюсь, вам понравился этот урок так же, как мне понравилось вести вас через него. Продолжайте программировать, учиться и, что самое важное, наслаждайтесь Python!

Credits: Image by storyset