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. Они универсальны и очень практичны, что делает их предпочтительной структурой данных во многих случаях.