Как сделать список в питоне

Работа со списками (list) в Python

С оздание списка в Python может понадобиться для хранения в них коллекции объектов. Списки могут хранить объекты всех типов в одном, в отличие от массива в другом языке программирования. Также размер списка доступен к изменению.

Что такое список

Список (list) – тип данных, предназначенный для хранения набора или последовательности разных элементов.

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

Как списки хранятся в памяти?

Базовая C-структура списков в Python (CPython) выглядит следующим образом:

Когда мы создаём список, в памяти под него резервируется объект, состоящий из 3-х частей:

Python размещает элементы списка в памяти, затем размещает указатели на эти элементы. Таким образом, список в Python – это массив указателей.

Как сделать список в питоне

Как сделать список в питоне

Базовая работа со списками

Объявление списка

Как сделать список в питоне

Как сделать список в питоне

Объявление списка – самый первый и главный этап его создания. Для объявления списка в Python существует несколько способов.

Вариант №1 : Через литерал (выражение, создающее объект):

>>> elements = [1, 3, 5, 6] >>> type(elements) >>> print(elements) [1, 3, 5, 6]

Вариант №2 : Через функцию list() :

>>> elements = list() >>> type(elements) >>> print(elements) []

В этом примере создается пустой список.

Обращение к элементу списка в Python

Как сделать список в питоне

Как сделать список в питоне

Некоторые операции, рассмотренные выше, имеют два варианта выбора элемента: либо выбор непосредственно его по имени, либо обращение по индексу. Индексом называют его порядковый номер, начиная с нуля.

Существует также отрицательный индекс, рассмотрим на примере:

elements = [1, 2, 3, ‘word’]

Нумерация элементов списка в Python начиная с нуля

>>> elements[-4] 1 >>> elements[-1] ‘word’

Добавление в список

Как сделать список в питоне

Как сделать список в питоне

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

>>> elements = [1, 2, 3, ‘word’] >>> elements.append(‘meow’) >>> print(elements) [1, 2, 3, ‘word’, ‘meow’]

Для простого примера, рассмотрим создание списка с нуля с помощью метода append() :

>>> elements = [] >>> elements.append(1) >>> elements.append(‘word’) >>> elements.append(‘meow’) >>> print(elements) [1, ‘word’, ‘meow’]

Добавление в список на указанную позицию

Как сделать список в питоне

Как сделать список в питоне

>>> elements = [1, 2, 4] >>> print(elements) [1, 2, 4] >>> elements.insert(2, 3) >>> print(elements) [1, 2, 3, 4]

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

Как сделать список в питоне

Как сделать список в питоне

Изменение элементов списка происходит следующим образом: нужно выбрать элемент по индексу (порядковому номеру элемента) и присвоить новое значение.

>>> elements = [2, 4, 6] >>> elements[2] = 8 >>> print(elements) [2, 4, 8]

В примере выше мы заменили 6 на 8.

Не забывайте, что счёт начинается с нуля, и в данном списке цифра 6 это 2-й элемент

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

Как сделать список в питоне

Как сделать список в питоне

>>> elements = [1, «test», 5, 7] >>> del elements[1] >>> print(elements) [1, 5, 7]

Удалять можно как из текущего списка, так и из вложенных списков:

>>> my_list = [«hello», «world», «!»] >>> elements = [1, my_list, «ok»] >>> del elements[1][2] >>> print(elements) [1, [‘hello’, ‘world’], ‘ok’]

Можно удалять целыми диапазонами:

>>> elements = [2, 4, 6, 8, 12] >>> del elements[2:] # удаляем все элементы после 2-го элемента (включительно) >>> print(elements) [2, 4] >>> elements = [2, 4, 6, 8, 12] >>> del elements[:3] # удаляем все элементы до 3-го элемента >>> print(elements) [8, 12] >>> elements = [2, 4, 6, 8, 12] >>> del elements[1:3] # удаляем от 1-го элемента включительно до 3-го элемента >>> print(elements) [2, 8, 12]

>>> elements = [2, «test», 4] >>> elements.remove(«test») >>> print(elements) [2, 4]

Как проверить наличие элемента в списке

Как сделать список в питоне

Как сделать список в питоне

>>> elements = [‘слон’, ‘кот’, ‘лошадь’, ‘змея’, ‘рыба’] >>> if ‘кот’ in elements: print(‘meow’) meow

Объединение списков

Как сделать список в питоне

Как сделать список в питоне

>>> a = [1, 3, 5] >>> b = [1, 2, 4, 6] >>> print(a + b) [1, 3, 5, 1, 2, 4, 6] >>> hello = [«h», «e», «l», «l», «o»] >>> world = [«w», «o», «r», «l», «d»] >>> hello.extend(world) # extends не возвращает новый список, а дополняет текущий >>> print(hello) [‘h’, ‘e’, ‘l’, ‘l’, ‘o’, ‘w’, ‘o’, ‘r’, ‘l’, ‘d’]

Копирование списка Python

Как сделать список в питоне

Как сделать список в питоне

>>> a = [1, 2, 3] >>> b = a # переменно b присваивается не значение списка a, а его адрес >>> print(id(a), id(b)) 56466376 56466376 # a и b ссылаются на один и тот же список >>> b.append(4) >>> print(a, b) [1, 2, 3, 4] [1, 2, 3, 4]

Для копирования списков можно использовать несколько вариантов:

Рассмотрим на примере каждый из этих способов:

>>> a = [«кот», «слон», «змея»] >>> b = a.copy() >>> print(id(a), id(b), a, b) 56467336 56467016 [‘кот’, ‘слон’, ‘змея’] [‘кот’, ‘слон’, ‘змея’] >>> d = list(a) >>> print(id(a), id(d), a, d) 56467336 60493768 [‘кот’, ‘слон’, ‘змея’] [‘кот’, ‘слон’, ‘змея’] >>> import copy >>> e = copy.copy(a) # >>> print(id(a), id(e), a, e) 56467336 60491304 [‘кот’, ‘слон’, ‘змея’] [‘кот’, ‘слон’, ‘змея’] >>> f = copy.deepcopy(a) >>> print(id(a), id(f), a, f) 56467336 56467400 [‘кот’, ‘слон’, ‘змея’] [‘кот’, ‘слон’, ‘змея’] >>> c = a[:] # устаревший синтаксис >>> print(id(a), id(c), a, c) 56467336 60458408 [‘кот’, ‘слон’, ‘змея’] [‘кот’, ‘слон’, ‘змея’] Важно : copy.copy(a) делает поверхностное копирование. Объекты внутри списка будут скопированы как ссылки на них (как в случае с оператором = ). Если необходимо рекурсивно копировать всех элементов в списке, используйте copy.deepcopy(a)

Скопировать часть списка можно с помощью срезов. Есть несколько вариантов использования:

>>> a = [«кот», «слон», «змея»] >>> b = a[2:] # с 2-го элемента (включительно) до конца списка >>> print(b) [‘змея’] >>> c = a[:2] # с начала списка по 2-й элемент >>> print(c) [‘кот’, ‘слон’] >>> d = a[1:2] # с 1-го элемента (включительно) по 2-й элемент >>> print(d) [‘слон’] >>> a = [1, 2, 3, 4, 5, 6, 7, 8] >>> e = a[0:8:2] # c 0-го элемента по 8-й элемент с шагом 2 >>> print(e) [1, 3, 5, 7]

Цикл по списку

Как сделать список в питоне

Как сделать список в питоне

elements = [1, 2, 3, «meow»] for el in elements: print(el)

elements = [1, 2, 3, «meow»] elements_len = len(elements) i = 0 while i

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

Пример использования методов:

# append >>> a = [1, 2, 3] >>> a.append(4) print(a) [1, 2, 3, 4] # extend >>> elements = [1, 2, 3, «meow»] >>> elements.extend([4, 5, «gaf»]) >>> print(elements) [1, 2, 3, ‘meow’, 4, 5, ‘gaf’] # insert >>> a = [1, 3, 4] >>> a.insert(1, 2) >>> print(a) [1, 2, 3, 4] # remove >>> elements = [1, «meow», 3, «meow»] >>> elements.remove(«meow») >>> print(elements) [1, 3, ‘meow’] # remove удаляет только первое вхождение # clear >>> a = [1, 2, 3] >>> a.clear() >>> print(a) [] # copy >>> a = [1, 2, 3] >>> b = a.copy() >>> print(id(a), id(b), a, b) 60458408 60491880 [1, 2, 3] [1, 2, 3] # count >>> elements = [«one», «two», «three», «one», «two», «one»] >>> print(elements.count(«one»)) 3 # index >>> elements = [«one», «two», «three», «one», «two», «one»] >>> print(elements.index(«three»)) 2 # pop >>> elements = [1, «meow», 3, «meow»] >>> elements.pop(1) # удаляем элемент с индексом 1 ‘meow’ # pop возвращает удаленный элемент списка >>> print(elements) [1, 3, ‘meow’] >>> elements.pop() # удаляем первый элемент списка ‘meow’ >>> print(elements) [1, 3] >>> elements.pop(-1) # удаляем последний элемент списка 3 >>> print(elements) [1] # reverse >>> a = [1, 2, 3] >>> a.reverse() >>> print(a) [3, 2, 1] # sort (по возрастанию) >>> elements = [3, 19, 0, 3, 102, 3, 1] >>> elements.sort() >>> print(elements) [0, 1, 3, 3, 3, 19, 102] # sort (по убыванию) >>> elements = [3, 19, 0, 3, 102, 3, 1] >>> elements.sort(reverse = True) >>> print(elements) [102, 19, 3, 3, 3, 1, 0]

Вложенные списки

Список может содержать объекты разных типов: числовые, буквенные, а также списки. Список списков выглядит следующим образзом:

>>> elements = [1, 2, [0.1, 0.2, 0.3]]

Для обращения к элементу вложенного списка нужно использовать два индекса: первый указывает на индекс главного списка, второй — индекс элемента во вложенном списке. Вот пример:

>>> elements = [[«яблоки», 50], [«апельсины», 190], [«груши», 100]] >>> print(elements[0]) [‘яблоки’, 50] >>> print(elements[1][0]) апельсины

Срезы

Срезы (slices) – это подмножества элементов списка. Срезу нужны, когда необходимо извлечь часть списка из полного списка.

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

В этом случае берётся срез от номера start (включительно) до stop (не включая его), а step – это шаг. По умолчанию start и stop равны 0, step равен 1.

Генераторы списков

>>> c = [c * 3 for c in ‘list’] >>> print(c) [‘lll’, ‘iii’, ‘sss’, ‘ttt’]

Таким образом мы получили отдельно взятые утроенные буквы слова, введённого в кавычки. Есть множество вариантов применения генератора списков.

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

>>> nums = [i for i in range(1, 15)] >>> print(nums) [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]

Best Practices

Последние абзацы статьи будут посвящены лучшим решениям практических задач, с которыми так или иначе сталкивается Python-разработчик.

Как получить список в обратном порядке

Изменить порядок размещения элементов в списке помогает функция list.reverse() :

>>> elements = [1, 2, 3, 4, 5, 6] >>> elements.reverse() >>> print(elements) [6, 5, 4, 3, 2, 1]

Как перевести список в другой формат?

Иногда требуется перевести список в строку, в словарь или в JSON. Для этого нужно будет вывести список без скобок.

Перевод списка в строку осуществляется с помощью функции join(). На примере это выглядит так:

>>> fruits = [«яблоко», «груша», «ананас»] >>> print(‘, ‘.join(fruits)) яблоко, груша, ананас

В данном случае в качестве разделителя используется запятая.

>>> elements = [[‘1’, ‘a’],[‘2’, ‘b’],[‘3’, ‘c’]] >>> my_dict = dict(elements) >>> print(my_dict)

JSON – это JavaScript Object Notation. В Python находится встроенный модуль json для кодирования и декодирования данных JSON. С применением метода json.dumps(x) можно запросто преобразовать список в строку JSON.

>>> import json >>> json.dumps([‘word’, ‘eye’, ‘ear’]) ‘[«word», «eye», «ear»]’

Как узнать индекс элемента в списке?

>>> elements = [1, 3, 6, 9, 55] >>> print(elements.index(9)) 3

В качестве аргумента передаем значение, а на выходе получаем его индекс.

Как посчитать количество уникальных элементов в списке?

Самый простой способ – приведение списка к set (множеству). После этого останутся только уникальные элементы, которые мы посчитаем функцией len() :

>>> words = [«one», «two», «one», «three», «one»] >>> len(set(words)) 3

Как проверить список на пустоту?

Как создать список числовых элементов с шагом

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

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

>>> elements = [1, 2, 3, 4, 5, 8, 9, 10, 11, 14, 20] >>> print(elements[0:11:2]) [1, 3, 5, 9, 11, 20]

Еще один вариант – воспользоваться генератором списков:

>>> elements = [c for c in range(0, 10, 2)] # от 0 (включительно) до 10 с шагом 2 >>> print(elements) [0, 2, 4, 6, 8]

При разработке на языке Python, списки встречаются довольно часто. Знание основ работы со списками поможет быстро и качественно писать программный код 😉.

Источник

Списки (list) в Python с примерами

Создание списка Python

Список Python создается путем помещения элементов в квадратные скобки, разделенных запятой.

В списке можно хранить разные типы элементов.

У нас также могут быть вложенные списки.

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

Как сделать список в питоне

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

Мы можем получить доступ к элементам списка с помощью index. Значение индекса начинается с 0.

Если индекс не входит в диапазон, возникает IndexError.

Как сделать список в питоне

Это полезно, когда нам нужен определенный элемент быстро, например, последний элемент, второй последний элемент и т. д.

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

Мы можем получить доступ к элементам вложенного списка с помощью вложенных индексов. Давайте разберемся в этом на нескольких простых примерах.

Вложенный элемент может быть любой другой последовательностью, которая также поддерживает доступ на основе индекса. Например, результат будет таким же для вложенного списка [1, (2, 3), (4, 5, 6), 7].

Мы также можем использовать отрицательные индексы с вложенными списками. Приведенный выше фрагмент кода можно переписать следующим образом.

Как сделать список в питоне

Обновление

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

Итерация по списку

Мы можем использовать цикл for для перебора элементов списка.

Если вы хотите перебирать элементы в обратном порядке, вы можете использовать встроенную функцию reversed().

Как проверить существует ли элемент?

Мы можем использовать оператор «in», чтобы проверить, присутствует ли элемент в списке или нет. Точно так же мы можем использовать оператор «not in».

Удаление

Мы можем использовать ключевое слово «del» для удаления индекса списка или самого полного списка.

Нарезка

Мы можем использовать нарезку, чтобы создать новый список из элементов. Это полезно при создании нового из исходного.

Техника нарезки содержит два индекса, разделенных двоеточием. Левый индекс включен, а правый индекс исключен из результата.

Как сделать список в питоне

Объединение (оператор +)

Мы можем объединить несколько списков элементов для создания нового с помощью оператора +.

Повторяющиеся элементы (оператор *)

Python List также поддерживает оператор * для создания нового списка с элементами, повторяющимися указанное количество раз.

Как найти длину списка Python?

Мы можем получить длину или размер списка с помощью встроенной функции len().

Встроенный конструктор list()

Мы можем создать список из итерируемого, используя встроенный конструктор list(). Эта функция принимает итеративный аргумент, поэтому мы можем передавать String, Tuple и т. д.

Функции

Давайте посмотрим на некоторые функции, представленные в объекте списка.

1. Append (объект)

Эта функция используется для добавления элемента в конец.

2. index(объект, начало, конец)

Начало и конец являются необязательными аргументами, чтобы указать индекс, с которого следует начать и закончить поиск объекта.

3. count (объект)

Эта функция возвращает количество вхождений объекта.

4. reverse()

Эта функция меняет местами элементы.

5. clear()

Эта функция удаляет все элементы.

6. copy()

Эта функция возвращает копию.

7. extend(итерация)

Эта функция добавляет все элементы из итерируемого в конец этого списка. Некоторые из известных итераций в Python — это Tuple, List и String.

8. insert (индекс, объект)

Этот метод вставляет объект непосредственно перед указанным индексом.

Если значение индекса больше, чем длина списка, объект добавляется в конец.

Если значение индекса отрицательное и не входит в диапазон, то объект добавляется в начало.

9. pop (индекс)

Эта функция удаляет элемент по заданному индексу и возвращает его. Если индекс не указан, последний элемент удаляется и возвращается.

Эта функция вызывает IndexError, если список пуст или индекс выходит за пределы допустимого диапазона.

10. remove(объект)

Эта функция удаляет первое вхождение данного объекта. Если объект не найден, возникает ошибка ValueError.

11. sort(ключ, реверс)

Эта функция используется для сортировки элементов. Элементы списка должны реализовывать функцию __lt __ (self, other).

Мы можем указать имя функции как ключ, который будет использоваться для сортировки. Таким образом, мы можем определить нашу собственную пользовательскую функцию, которая будет использоваться для сортировки элементов.

reverse принимает логическое значение. Если True, то список сортируется в обратном порядке. Значение по умолчанию Reverse — False, и элементы сортируются в естественном порядке.

Источник

Python списки

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

Создание и заполнение

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

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

Для заполнения списков можно использовать разные литералы, к примеру, строки, вызывая встроенную функцию list, как это показано в следующем примере.

Чтобы автоматизировать заполнение совокупностей разнотипных объектов, рекомендуется использовать генераторы списков. Данные механизмы позволяют применять определенное выражение к каждому элементу заданной последовательности.

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

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

При необходимости любой из объектов можно размещать по заданному индексу в списке. Для этого используется метод с именем insert. Вызвав его для существующего списка, нужно передать в качестве аргументов желаемый номер элемента и сам объект.

Стоит принять во внимание, что нумерация объектов в списке осуществляется с нуля.

Расширение списка

Имея необходимость объединить два разных набора данных, представленных в виде списков, стоит воспользоваться методом extend. Выполнив его вызов для одного из объектов и записав в качестве аргумента другой объект, произойдет их слияние в одно целое.

Таким образом, элементы второго списка будут автоматически записаны в конец первого.

Удаление элемента

Встроенные функции платформы позволяют не только добавлять новые данные, но и выборочно избавляться от них. Для того, чтобы удалить элемент из списка Python существуют функции remove и pop. В случае с первым методом происходит удаление первого по индексу объекта с выбранным значением.

Метод pop действует несколько иначе, давая возможность извлечь элемент списка по любому индексу, как это показано в следующем примере.

Если же не передавать номер необходимого объекта, то удалится последний по счету.

Очистка списка

Быстро удалить все элементы списка поможет функция clear. Для этого потребуется вызвать ее через созданный ранее объект, как в следующем примере.

Стоит отметить, что сам список после осуществления данной операции не удаляется.

Получение размера

Воспользовавшись встроенным методом с именем len, можно определить количество элементов в списке Python — его длину. Функция возвращает общее количество элементов.

Также существует возможность узнать количество выбранных объектов при помощи метода count. Его необходимо вызвать для текущего списка. В качестве аргументов здесь должен выступать искомый элемент.

Благодаря этой функции можно искать не только литералы, но и ссылки на объекты.

Сортировка

Сортировка списка Python осуществляется с помощью sort. Функция sort производит упорядочивание присутствующих в выбранном списке элементов, автоматически определяя наиболее подходящий способ сортировки.

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

Переворачивание

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

Как можно увидеть, данная функция просто меняет порядок элементов на противоположный.

Копирование

Чтобы получить два одинаковых списка привычной операции присваивания недостаточно, поскольку в таком случае объект не копируется, а лишь создается еще одна ссылка на него. Получить полноценный дубликат выбранного списка поможет функция copy.

После вызова данного метода на любом существующем списке происходит автоматическое создание аналогичного по внутреннему содержанию объекта, который в последствие можно свободно присвоить другой ссылке.

Поиск

Чтобы осуществить в Python поиск в списке и найти индекс известного элемента следует прибегнуть к функции index. Аргументом данного метода является искомый объект либо литерал.

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

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

Состоящий из символов список поддается конвертации в строчное представление. Для этого потребуется выполнить конкатенацию новой строки с возвращаемым значением функции join. В качестве аргумента для данного метода должен выступать список. Вот пример преобразования в строку списка Python.

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

Получение двумерного списка

Базовые возможности платформы позволяют работать с двумерным представлением набора определенных значений в программе. Реализовать это можно при помощи обычного оператора присваивания, просто добавляя список в список Python для получения двумерного списка.

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

Преобразование словаря в список

Как известно, словарь может хранить заданную коллекцию произвольных объектов, доступ к которым осуществляется по ключу. Воспользовавшись методом items, можно преобразовать словарь в список, как это показано в следующем примере.

Элементы в инициализированном таким образом списке представлены в виде пар с ключом и соответствующим ему значением.

Заключение

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

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *