5 часто встречающихся вопросов про списки в Python

5 часто встречающихся вопросов про списки в Python

Автор: Fantom | Статьи 27 мая 2022

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

Я взял несколько вопросов про списки в Python, которые получившие большое количество голосов на StackOverFlow. В этой статье мы их рассмотрим, и узнаем несколько их особых особенностей.

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

mylist = [4, True, "a", 15]

Как видно из этого примера, списки могут хранить объекты с разными типами данных.

Как проверить, пустой ли список?

Есть несколько способов проверить наличие элементов в списке. Например, мы можем узнать длину списка с помощью функции len, и если она равна 0, то список пуст.

mylist = []

if len(mylist) == 0:
    print("Список пуст!")

#Список пуст!

Более питонический способ сделать это, основан на том факте, что пустые списки являются ложными.

mylist = []

if not mylist:
    print("Список пуст!")

#Список пуст!

В чем разница между методами append и extend?

Метод append используется для добавления нового элемента в список, тогда как метод extend расширяет список, используя элементы другой коллекции.

Давайте рассмотрим несколько примеров, чтобы узнать как они работают.

a = [1, 2, 3]

a.append(4)

print(a)

#[1, 2, 3, 4]

Если вы передадите список методу append, он будет добавлен как отдельный элемент.

a = [1, 2, 3]

a.append([4, 5])

print(a)

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

Если мы повторим тот же пример, используя метод extend, 4 и 5 будут добавлены как отдельные элементы.

a = [1, 2, 3]

a.extend([4, 5])

print(a)

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

Как получить последний элемент списка?

Индекс первого элемента списка равен 0. Индекс последнего элемента разумеется зависит от длины списка. Однако у нас есть возможность начать с последнего элемента, указав отрицательный индекс -1.

a = [1, 2, 3, 4]

a[-1]

#4

Описанный выше метод выдаст ошибку индекса если список пуст, но мы можем решить эту проблему с помощью простого решения:

a = []

a[-1:]

#[]

По-прежнему выводиться пустой список, но код не выдает ошибку.

Преобразование многомерного списка в одномерный

Предположим, у нас есть список списков, как показано ниже:


а = [[1, 2], [3, 4], ["a", "b"]]

и мы хотим преобразовать его в список элементов, как показано ниже:


а = [1, 2, 3, 4, "a", "b"]

Опять же, есть несколько способов для выполнения этой задачи. Мы будем использовать списковые включения (List comprehension).

a = [[1, 2], [3, 4], ["a", "b"]]

b = [item for sublist in a for item in sublist]

print(b)

#[1, 2, 3, 4, 'a', 'b']

Если синтаксис списковых включений кажется запутанным, попробуйте думать о нем как о вложенных циклах for.

a = [[1, 2], [3, 4], ["a", "b"]]

b = []

for sublist in a:
    for item in sublist:
        b.append(item)

print(b)

#[1, 2, 3, 4, 'a', 'b']

Как удалить дубликаты в списке?

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

Одной из отличительных особенностей множеств является то, что они не содержат дубликатов.

a = [1, 1, 2, 3, 3, 4, 5, 6, 7, 7, 7]

b = list(set(a))

print(b)

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

Сначала мы преобразуем список в множества, а затем обратно в список.

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

Перевод статьи

Комментарии

Markdown
Войти