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

Списки в Python

Список — это изменяемая коллекция элементов, которая может содержать данные любого типа. Элементы списка могут повторяться, и к ним можно обращаться по индексу.

Пример создания списка:

fruits = ["яблоко", "банан", "вишня"]

Этот список содержит три элемента: «яблоко», «банан» и «вишня».

Доступ к элементам списка

Каждый элемент списка имеет свой индекс, начиная с нуля. Чтобы получить доступ к элементу, можно использовать его индекс:

print(fruits[0])  # Выведет 'яблоко'

Изменение элементов списка

Поскольку список является изменяемой структурой данных, вы можете изменять его элементы после создания:

fruits[1] = "манго"
print(fruits)  # ['яблоко', 'манго', 'вишня']

Добавление и удаление элементов

Списки предоставляют несколько методов для добавления новых элементов и удаления существующих.

Добавление элементов:

  • append() — добавляет элемент в конец списка.
  • insert() — добавляет элемент на определённую позицию.
fruits.append("апельсин")
print(fruits)  # ['яблоко', 'манго', 'вишня', 'апельсин']

fruits.insert(1, "груша")
print(fruits)  # ['яблоко', 'груша', 'манго', 'вишня', 'апельсин']

Удаление элементов:

  • remove() — удаляет первый найденный элемент с указанным значением.
  • pop() — удаляет элемент по индексу (или последний элемент, если индекс не указан).
  • clear() — удаляет все элементы списка.
fruits.remove("манго")
print(fruits)  # ['яблоко', 'груша', 'вишня', 'апельсин']

fruits.pop(2)
print(fruits)  # ['яблоко', 'груша', 'апельсин']

fruits.clear()
print(fruits)  # []

Операции со списками

Конкатенация (объединение списков):

list1 = [1, 2, 3]
list2 = [4, 5, 6]
combined = list1 + list2
print(combined)  # [1, 2, 3, 4, 5, 6]

Повторение:

print([0] * 5)  # [0, 0, 0, 0, 0]

Проверка наличия элемента:

print(3 in combined)  # True

Цикл по элементам списка

Списки удобно перебирать с помощью цикла for:

for fruit in fruits:
    print(fruit)

Кортежи в Python

Кортеж — это неизменяемая коллекция элементов, то есть после создания кортеж нельзя изменить, добавить или удалить его элементы. Кортежи используют, когда важно сохранить неизменность данных.

Пример создания кортежа:

dimensions = (1920, 1080)

Доступ к элементам кортежа

Точно так же, как и у списков, к элементам кортежа можно обращаться по индексу:

print(dimensions[0])  # 1920

Преимущества кортежей

Хотя кортежи неизменяемы, у них есть свои преимущества:

  • Они занимают меньше памяти, чем списки.
  • Из-за их неизменности, они безопасны для использования в качестве ключей словарей.

Операции с кортежами

Конкатенация:

tuple1 = (1, 2, 3)
tuple2 = (4, 5, 6)
combined = tuple1 + tuple2
print(combined)  # (1, 2, 3, 4, 5, 6)

Повторение:

print((0,) * 5)  # (0, 0, 0, 0, 0)

Проверка наличия элемента:

print(3 in combined)  # True

Преобразование списка в кортеж и наоборот

Иногда требуется преобразовать список в кортеж и наоборот. Для этого существуют встроенные функции list() и tuple():

list_from_tuple = list(dimensions)
tuple_from_list = tuple(fruits)

Пример программы: каталог книг на Python

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

Пример программы: каталог книг

# Создаем кортеж с жанрами
genres = ("Фантастика", "Роман", "Детектив", "Фэнтези", "Научная литература")

# Список для хранения книг. Каждая книга представлена как словарь.
books = []

# Функция для добавления книги в каталог
def add_book(title, author, genre, year):
    """Добавляет книгу в каталог"""
    if genre not in genres:
        print(f"Жанр '{genre}' не поддерживается.")
        return
    book = {
        "title": title,
        "author": author,
        "genre": genre,
        "year": year
    }
    books.append(book)
    print(f"Книга '{title}' добавлена в каталог.")

# Функция для фильтрации книг по жанру
def filter_books_by_genre(genre):
    """Возвращает список книг выбранного жанра"""
    filtered_books = [book for book in books if book["genre"] == genre]
    return filtered_books

# Функция для отображения всех книг
def display_books(book_list):
    """Выводит информацию о книгах"""
    if not book_list:
        print("Список книг пуст.")
    else:
        for book in book_list:
            print(f"{book['title']} ({book['year']}) - {book['author']} [{book['genre']}]")

# Пример работы программы
add_book("1984", "Джордж Оруэлл", "Фантастика", 1949)
add_book("Убийство в «Восточном экспрессе»", "Агата Кристи", "Детектив", 1934)
add_book("Властелин колец", "Дж. Р. Р. Толкин", "Фэнтези", 1954)
add_book("Краткая история времени", "Стивен Хокинг", "Научная литература", 1988)

print("\nВсе книги в каталоге:")
display_books(books)

print("\nФильтр по жанру 'Фантастика':")
filtered_books = filter_books_by_genre("Фантастика")
display_books(filtered_books)

print("\nФильтр по жанру 'Роман':")
filtered_books = filter_books_by_genre("Роман")
display_books(filtered_books)

Объяснение работы программы:

  • Кортеж genres содержит доступные жанры для книг.
  • Список books хранит данные о каждой книге в виде словарей с ключами title, author, genre и year.
  • Функция add_book добавляет новую книгу, проверяя наличие жанра в кортеже genres.
  • Функция filter_books_by_genre возвращает список книг с указанным жанром.
  • Функция display_books отображает книги из переданного списка.

Пример вывода программы:

Книга '1984' добавлена в каталог.
Книга 'Убийство в «Восточном экспрессе»' добавлена в каталог.
Книга 'Властелин колец' добавлена в каталог.
Книга 'Краткая история времени' добавлена в каталог.

Все книги в каталоге:
1984 (1949) - Джордж Оруэлл [Фантастика]
Убийство в «Восточном экспрессе» (1934) - Агата Кристи [Детектив]
Властелин колец (1954) - Дж. Р. Р. Толкин [Фэнтези]
Краткая история времени (1988) - Стивен Хокинг [Научная литература]

Фильтр по жанру 'Фантастика':
1984 (1949) - Джордж Оруэлл [Фантастика]

Фильтр по жанру 'Роман':
Список книг пуст.

Возможные улучшения:

Можно добавить функции для поиска книг по автору, удаления книг из списка или сортировки по году.

Заключение

Списки и кортежи — это фундаментальные структуры данных в Python, которые помогают вам хранить и организовывать данные. Списки позволяют изменять содержимое на лету, а кортежи обеспечивают неизменность данных. В зависимости от задач вы можете выбрать ту структуру данных, которая лучше подходит для вашего проекта.

В следующей статье мы обсудим работу с наборами и словарями — ещё двумя важными структурами данных в Python, которые помогут вам управлять коллекциями данных более эффективно.

Станьте востребованным Backend-разработчиком на Python за 10 месяцев и зарабатывайте на своих навыках. Вас ждёт обучение на практике: 15 реальных проектов, работа с Django, Flask, FastAPI и Docker, а также создание API и чат-ботов. Начните бесплатно уже сейчас с вводных уроков!

Комментарии

0

Без регистрации и смс