0 added
0 removed
Original
2026-01-01
Modified
2026-03-10
1
<p>Популярность<strong>Python</strong>обуславливается его относительной простотой и широкими функциональными возможностями. Среди них - успешная работа со структурами данных - это<strong>списки</strong>, кортежи, словари и множества. В нашей сегодняшней статье мы разберёмся со списками, поговорим про добавление и поиск элементов, а напоследок подробно расскажем об<strong>особенностях сортировки в Python</strong>.</p>
1
<p>Популярность<strong>Python</strong>обуславливается его относительной простотой и широкими функциональными возможностями. Среди них - успешная работа со структурами данных - это<strong>списки</strong>, кортежи, словари и множества. В нашей сегодняшней статье мы разберёмся со списками, поговорим про добавление и поиск элементов, а напоследок подробно расскажем об<strong>особенностях сортировки в Python</strong>.</p>
2
<h2>Что такое список в Python?</h2>
2
<h2>Что такое список в Python?</h2>
3
<p><strong>Список (list)</strong>представляет собой структуру данных, предназначенную для хранения объектов. При этом не стоит путать список с массивом.</p>
3
<p><strong>Список (list)</strong>представляет собой структуру данных, предназначенную для хранения объектов. При этом не стоит путать список с массивом.</p>
4
<p>Некоторые<strong>особенности списка</strong>в Python: - в списке можно хранить элементы разных типов; - размер списка можно изменять.</p>
4
<p>Некоторые<strong>особенности списка</strong>в Python: - в списке можно хранить элементы разных типов; - размер списка можно изменять.</p>
5
<h2>Как хранятся списки в памяти?</h2>
5
<h2>Как хранятся списки в памяти?</h2>
6
<p>Во время создания списка в<strong>Python</strong>происходит резервирование пустой области в памяти. Условно можно сказать, что это некий контейнер, где содержатся ссылки на другие элементы данных. Однако в отличие от таких данных, как строка либо число, содержимое контейнера списка может меняться.</p>
6
<p>Во время создания списка в<strong>Python</strong>происходит резервирование пустой области в памяти. Условно можно сказать, что это некий контейнер, где содержатся ссылки на другие элементы данных. Однако в отличие от таких данных, как строка либо число, содержимое контейнера списка может меняться.</p>
7
<p>Чтобы лучше представлять вышеописанный процесс, посмотрим на картинку. Мы увидим список, который содержит ссылки на объекты 1 и 2. При этом после выполнения операции a[1] = 3, вторая ссылка станет указывать на объект № 3 (в<strong>Питоне</strong>элементы списка нумеруются, начиная с нуля).</p>
7
<p>Чтобы лучше представлять вышеописанный процесс, посмотрим на картинку. Мы увидим список, который содержит ссылки на объекты 1 и 2. При этом после выполнения операции a[1] = 3, вторая ссылка станет указывать на объект № 3 (в<strong>Питоне</strong>элементы списка нумеруются, начиная с нуля).</p>
8
<h4>Создание, удаление и изменение списков, а также работа с его элементами</h4>
8
<h4>Создание, удаление и изменение списков, а также работа с его элементами</h4>
9
<p>Создать список в Python можно следующим способом:</p>
9
<p>Создать список в Python можно следующим способом:</p>
10
>>> a = [] >>> type(a) <class 'list'> >>> b = list() >>> type(b) <class 'list'><p>Кроме того, возможно<strong>создание списка</strong>с заранее известным набором данных:</p>
10
>>> a = [] >>> type(a) <class 'list'> >>> b = list() >>> type(b) <class 'list'><p>Кроме того, возможно<strong>создание списка</strong>с заранее известным набором данных:</p>
11
>>> a = [1, 2, 3] >>> type(a) <class 'list'><p>Если список уже есть и нужно создать копию, это тоже не проблема:</p>
11
>>> a = [1, 2, 3] >>> type(a) <class 'list'><p>Если список уже есть и нужно создать копию, это тоже не проблема:</p>
12
>>> a = [1, 3, 5, 7] >>> b = list(a) >>> print(a) [1, 3, 5, 7] >>> print(b) [1, 3, 5, 7]<p>Обратите внимание, что если вы делаете простое присваивание списков друг другу, то переменной (в нашем примере это b) присваивается ссылка на тот же самый элемент данных в памяти, как и в списке a (не на копию списка a). Таким образом, если захотите изменить список a, b тоже будет меняться.</p>
12
>>> a = [1, 3, 5, 7] >>> b = list(a) >>> print(a) [1, 3, 5, 7] >>> print(b) [1, 3, 5, 7]<p>Обратите внимание, что если вы делаете простое присваивание списков друг другу, то переменной (в нашем примере это b) присваивается ссылка на тот же самый элемент данных в памяти, как и в списке a (не на копию списка a). Таким образом, если захотите изменить список a, b тоже будет меняться.</p>
13
>>> a = [1, 3, 5, 7] >>> b = a >>> print(a) [1, 3, 5, 7] >>> print(b) [1, 3, 5, 7] >>> a[1] = 10 >>> print(a) [1, 10, 5, 7] >>> print(b) [1, 10, 5, 7]<p>Если нужно добавить элемент в список, используем метод append():</p>
13
>>> a = [1, 3, 5, 7] >>> b = a >>> print(a) [1, 3, 5, 7] >>> print(b) [1, 3, 5, 7] >>> a[1] = 10 >>> print(a) [1, 10, 5, 7] >>> print(b) [1, 10, 5, 7]<p>Если нужно добавить элемент в список, используем метод append():</p>
14
>>> a = [] >>> a.append(3) >>> a.append("hello") >>> print(a) [3, 'hello']<p>А если требуется удалить элемент из списка в том случае, когда его значение известно, рекомендуется применение метода remove(x), который удалит первую ссылку на этот элемент:</p>
14
>>> a = [] >>> a.append(3) >>> a.append("hello") >>> print(a) [3, 'hello']<p>А если требуется удалить элемент из списка в том случае, когда его значение известно, рекомендуется применение метода remove(x), который удалит первую ссылку на этот элемент:</p>
15
>>> b = [2, 3, 5] >>> print(b) [2, 3, 5] >>> b.remove(3) >>> print(b) [2, 5]<p>Для удаления элемента по индексу подходит команда del имя_списка[индекс]:</p>
15
>>> b = [2, 3, 5] >>> print(b) [2, 3, 5] >>> b.remove(3) >>> print(b) [2, 5]<p>Для удаления элемента по индексу подходит команда del имя_списка[индекс]:</p>
16
>>> c = [3, 5, 1, 9, 6] >>> print(c) [3, 5, 1, 9, 6] >>> del c[2] >>> print(c) [3, 5, 9, 6]<p>Кроме того, можно изменить элемент списка в<strong>Python</strong>(его значение), напрямую к нему обратившись. Но для этого надо знать индекс элемента:</p>
16
>>> c = [3, 5, 1, 9, 6] >>> print(c) [3, 5, 1, 9, 6] >>> del c[2] >>> print(c) [3, 5, 9, 6]<p>Кроме того, можно изменить элемент списка в<strong>Python</strong>(его значение), напрямую к нему обратившись. Но для этого надо знать индекс элемента:</p>
17
>>> d = [2, 4, 9] >>> print(d) [2, 4, 9] >>> d[1] = 17 >>> print(d) [2, 17, 9]<p>А что нужно сделать, если требуется<strong>очистить список в Python</strong>? Для этого можно заново его проинициализировать, как будто вновь его создаёте. А чтобы получить доступ к элементу списка, поместите индекс данного элемента в квадратные скобки:</p>
17
>>> d = [2, 4, 9] >>> print(d) [2, 4, 9] >>> d[1] = 17 >>> print(d) [2, 17, 9]<p>А что нужно сделать, если требуется<strong>очистить список в Python</strong>? Для этого можно заново его проинициализировать, как будто вновь его создаёте. А чтобы получить доступ к элементу списка, поместите индекс данного элемента в квадратные скобки:</p>
18
>>> a = [3, 5, 7, 10, 3, 2, 6, 0] >>> a[2] 7<p>Можно применять и отрицательные индексы (счёт пойдёт с конца). Например, чтобы получить доступ к последнему элементу списка в<strong>Python</strong>, используют следующую команду:</p>
18
>>> a = [3, 5, 7, 10, 3, 2, 6, 0] >>> a[2] 7<p>Можно применять и отрицательные индексы (счёт пойдёт с конца). Например, чтобы получить доступ к последнему элементу списка в<strong>Python</strong>, используют следующую команду:</p>
19
<p>Также может понадобиться найти и получить из списка некоторый подсписок в заданном диапазоне индексов. Чтобы это реализовать, поместите начальный и конечный индексы в квадратные скобки и разделите их двоеточием:</p>
19
<p>Также может понадобиться найти и получить из списка некоторый подсписок в заданном диапазоне индексов. Чтобы это реализовать, поместите начальный и конечный индексы в квадратные скобки и разделите их двоеточием:</p>
20
<p><strong>Объединить списки</strong>в Python тоже несложно. Объединение легко сделать с помощью метода extend:</p>
20
<p><strong>Объединить списки</strong>в Python тоже несложно. Объединение легко сделать с помощью метода extend:</p>
21
combo_list = [1] one_list = [4, 5] a = combo_list.extend(one_list) print(a) # [1, 4, 5]<p>Также в Python можно объединить список с другим, просто добавив их вместе. Это довольно простой способ объединения:</p>
21
combo_list = [1] one_list = [4, 5] a = combo_list.extend(one_list) print(a) # [1, 4, 5]<p>Также в Python можно объединить список с другим, просто добавив их вместе. Это довольно простой способ объединения:</p>
22
my_list = [1, 2, 3] my_list2 = ["a", "b", "c"] combo_list = my_list + my_list2 print(combo_list) # [1, 2, 3, 'a', 'b', 'c']<p>Как видите,<strong>объединить списки</strong>достаточно легко.</p>
22
my_list = [1, 2, 3] my_list2 = ["a", "b", "c"] combo_list = my_list + my_list2 print(combo_list) # [1, 2, 3, 'a', 'b', 'c']<p>Как видите,<strong>объединить списки</strong>достаточно легко.</p>
23
<h2>Закрепляем методы списков в Python</h2>
23
<h2>Закрепляем методы списков в Python</h2>
24
<p>Знание соответствующих методов и функций в<strong>Python</strong>позволит выполнить поиск, добавить нужный элемент, сделать сортировку и т. д. Итак, давайте перечислим основные методы списков и их функции (вспомним те, что уже упоминали, плюс добавим новые): 1.list.append(x) - обеспечивает добавление элемента в конец списка:</p>
24
<p>Знание соответствующих методов и функций в<strong>Python</strong>позволит выполнить поиск, добавить нужный элемент, сделать сортировку и т. д. Итак, давайте перечислим основные методы списков и их функции (вспомним те, что уже упоминали, плюс добавим новые): 1.list.append(x) - обеспечивает добавление элемента в конец списка:</p>
25
>>> a = [1, 2] >>> a.append(3) >>> print(a) [1, 2, 3]<p>2.list.extend(L) - расширяет имеющийся список путем добавления элементов из списка L.</p>
25
>>> a = [1, 2] >>> a.append(3) >>> print(a) [1, 2, 3]<p>2.list.extend(L) - расширяет имеющийся список путем добавления элементов из списка L.</p>
26
>>> a = [1, 2] >>> b = [3, 4] >>> a.extend(b) >>> print(a) [1, 2, 3, 4]<p>3.list.insert(i, x) - добавляет, а точнее, вставляет элемент х в позицию i. В качестве первого аргумента выступает индекс элемента, после которого вставляется элемент х.</p>
26
>>> a = [1, 2] >>> b = [3, 4] >>> a.extend(b) >>> print(a) [1, 2, 3, 4]<p>3.list.insert(i, x) - добавляет, а точнее, вставляет элемент х в позицию i. В качестве первого аргумента выступает индекс элемента, после которого вставляется элемент х.</p>
27
>>> a = [1, 2] >>> a.insert(0, 5) >>> print(a) [5, 1, 2] >>> a.insert(len(a), 9) >>> print(a) [5, 1, 2, 9]<p>4.list.remove(x) - служит для удаления первого вхождения элемента х, включённого в наш список.</p>
27
>>> a = [1, 2] >>> a.insert(0, 5) >>> print(a) [5, 1, 2] >>> a.insert(len(a), 9) >>> print(a) [5, 1, 2, 9]<p>4.list.remove(x) - служит для удаления первого вхождения элемента х, включённого в наш список.</p>
28
>>> a = [1, 2, 3] >>> a.remove(1) >>> print(a) [2, 3]<p>5.list.pop([i]) - обеспечивает удаление элемента из позиции i. Если применять метод без аргумента, удаляется последний элемент, находящийся в списке.</p>
28
>>> a = [1, 2, 3] >>> a.remove(1) >>> print(a) [2, 3]<p>5.list.pop([i]) - обеспечивает удаление элемента из позиции i. Если применять метод без аргумента, удаляется последний элемент, находящийся в списке.</p>
29
>>> a = [1, 2, 3, 4, 5] >>> print(a.pop(2)) 3 >>> print(a.pop()) 5 >>> print(a) [1, 2, 4]<p>6.list.clear() - просто удаляет все элементы:</p>
29
>>> a = [1, 2, 3, 4, 5] >>> print(a.pop(2)) 3 >>> print(a.pop()) 5 >>> print(a) [1, 2, 4]<p>6.list.clear() - просто удаляет все элементы:</p>
30
>>> a = [1, 2, 3, 4, 5] >>> print(a) [1, 2, 3, 4, 5] >>> a.clear() >>> print(a) []<p>7.list.index(x[, start[, end]]) - позволяет вернуть индекс элемента:</p>
30
>>> a = [1, 2, 3, 4, 5] >>> print(a) [1, 2, 3, 4, 5] >>> a.clear() >>> print(a) []<p>7.list.index(x[, start[, end]]) - позволяет вернуть индекс элемента:</p>
31
>>> a = [1, 2, 3, 4, 5] >>> a.index(4) 3<p>8.list.count(x) - возвращает число вхождений элемента х:</p>
31
>>> a = [1, 2, 3, 4, 5] >>> a.index(4) 3<p>8.list.count(x) - возвращает число вхождений элемента х:</p>
32
>>> a=[1, 2, 2, 3, 3] >>> print(a.count(2)) 2<p>9.list.sort(key=None, reverse=False) - сортирует элементы списков по возрастанию. Чтобы выполнить сортировку в обратном порядке используют флаг reverse=True. Кроме того, дополнительные возможности открываются параметром key.</p>
32
>>> a=[1, 2, 2, 3, 3] >>> print(a.count(2)) 2<p>9.list.sort(key=None, reverse=False) - сортирует элементы списков по возрастанию. Чтобы выполнить сортировку в обратном порядке используют флаг reverse=True. Кроме того, дополнительные возможности открываются параметром key.</p>
33
>>> a = [1, 4, 2, 8, 1] >>> a.sort() >>> print(a) [1, 1, 2, 4, 8]<p>10.list.reverse() - порядок расположения элементов меняется на обратный:</p>
33
>>> a = [1, 4, 2, 8, 1] >>> a.sort() >>> print(a) [1, 1, 2, 4, 8]<p>10.list.reverse() - порядок расположения элементов меняется на обратный:</p>
34
>>> a = [1, 3, 5, 7] >>> a.reverse() >>> print(a) [7, 5, 3, 1]<p>11.list.copy() - копирует списки:</p>
34
>>> a = [1, 3, 5, 7] >>> a.reverse() >>> print(a) [7, 5, 3, 1]<p>11.list.copy() - копирует списки:</p>
35
>>> a = [1, 7, 9] >>> b = a.copy() >>> print(a) [1, 7, 9] >>> print(b) [1, 7, 9] >>> b[0] = 8 >>> print(a) [1, 7, 9] >>> print(b) [8, 7, 9]<h2>Сортировка с помощью функции sorted()</h2>
35
>>> a = [1, 7, 9] >>> b = a.copy() >>> print(a) [1, 7, 9] >>> print(b) [1, 7, 9] >>> b[0] = 8 >>> print(a) [1, 7, 9] >>> print(b) [8, 7, 9]<h2>Сортировка с помощью функции sorted()</h2>
36
<p>Давайте ещё раз вернёмся к вопросу<strong>сортировки в Python</strong>. Чтобы отсортировать данные и найти нужные значения, используют простую встроенную функцию sorted(), принимающую итерируемый тип и возвращающую отсортированный список.</p>
36
<p>Давайте ещё раз вернёмся к вопросу<strong>сортировки в Python</strong>. Чтобы отсортировать данные и найти нужные значения, используют простую встроенную функцию sorted(), принимающую итерируемый тип и возвращающую отсортированный список.</p>
37
<p>Стандартная сортировка:</p>
37
<p>Стандартная сортировка:</p>
38
a = [3, 2, 5 ,4, 7, 1] a = sorted(a) print(a) # [1, 2, 3, 4, 5, 7]<p>Сортировка кортежа:</p>
38
a = [3, 2, 5 ,4, 7, 1] a = sorted(a) print(a) # [1, 2, 3, 4, 5, 7]<p>Сортировка кортежа:</p>
39
t = ('Zane', 'Bob', 'Janet') t = sorted(t) print(t) # ['Bob', 'Janet', 'Zane']<p>Сортировка словаря:</p>
39
t = ('Zane', 'Bob', 'Janet') t = sorted(t) print(t) # ['Bob', 'Janet', 'Zane']<p>Сортировка словаря:</p>
40
d = {1:'a', 2:'b', 3:'c'} d = sorted(d) print(d) # [1, 2, 3]<p>Помните, что функция sorted() возвратит список каждый раз вне зависимости от того, какой тип будет передан.</p>
40
d = {1:'a', 2:'b', 3:'c'} d = sorted(d) print(d) # [1, 2, 3]<p>Помните, что функция sorted() возвратит список каждый раз вне зависимости от того, какой тип будет передан.</p>
41
<p>Идём дальше. Мы уже упоминали ранее метод list.sort(). Так вот, он определён только для списков, зато функция sorted() позволит отсортировать любые итерируемые объекты:</p>
41
<p>Идём дальше. Мы уже упоминали ранее метод list.sort(). Так вот, он определён только для списков, зато функция sorted() позволит отсортировать любые итерируемые объекты:</p>
42
>>> sorted({1: 'D', 2: 'B', 3: 'B', 4: 'E', 5: 'A'}) [1, 2, 3, 4, 5]<h2>Сортировка по убыванию и возрастанию в Python</h2>
42
>>> sorted({1: 'D', 2: 'B', 3: 'B', 4: 'E', 5: 'A'}) [1, 2, 3, 4, 5]<h2>Сортировка по убыванию и возрастанию в Python</h2>
43
<p>Ранее упомянутый параметр reverse есть не только у метода list.sort(), но и у функции sorted(). Он принимает boolean-значение и нужен для сортировки по убыванию либо возрастанию. Ниже мы сортируем учеников по убыванию их возраста:</p>
43
<p>Ранее упомянутый параметр reverse есть не только у метода list.sort(), но и у функции sorted(). Он принимает boolean-значение и нужен для сортировки по убыванию либо возрастанию. Ниже мы сортируем учеников по убыванию их возраста:</p>
44
>>> sorted(student_tuples, key=itemgetter(2), reverse=True) [('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)] >>> sorted(student_objects, key=attrgetter('age'), reverse=True) [('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]<h2>Стабильность сортировки, сложная сортировка</h2>
44
>>> sorted(student_tuples, key=itemgetter(2), reverse=True) [('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)] >>> sorted(student_objects, key=attrgetter('age'), reverse=True) [('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]<h2>Стабильность сортировки, сложная сортировка</h2>
45
<p>Начиная с Python версии 2.2, сортировки гарантированно стабильны. Речь о том, что если у записей одинаковые ключи, их порядок не меняется.</p>
45
<p>Начиная с Python версии 2.2, сортировки гарантированно стабильны. Речь о том, что если у записей одинаковые ключи, их порядок не меняется.</p>
46
>>> data = [('red', 1), ('blue', 1), ('red', 2), ('blue', 2)] >>> sorted(data, key=itemgetter(0)) [('blue', 1), ('blue', 2), ('red', 1), ('red', 2)]<p>Здесь 2 записи с 'blue' сохранили изначальный порядок. Данное свойство позволяет сортировать сложные данные путём постепенных сортировок. Например, надо найти и отсортировать данные учеников как по возрасту в возрастающем порядке, так и по оценкам в порядке убывания. Сортировка буде выглядеть так:</p>
46
>>> data = [('red', 1), ('blue', 1), ('red', 2), ('blue', 2)] >>> sorted(data, key=itemgetter(0)) [('blue', 1), ('blue', 2), ('red', 1), ('red', 2)]<p>Здесь 2 записи с 'blue' сохранили изначальный порядок. Данное свойство позволяет сортировать сложные данные путём постепенных сортировок. Например, надо найти и отсортировать данные учеников как по возрасту в возрастающем порядке, так и по оценкам в порядке убывания. Сортировка буде выглядеть так:</p>
47
>>> s = sorted(student_objects, key=attrgetter('age')) # по вторичному ключу >>> sorted(s, key=attrgetter('grade'), reverse=True) # по первичному [('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]<p><em>Остались вопросы? Хотите поделиться своим личным опытом работы со списками? Нашли ошибку в тексте? Пишите комментарий!</em></p>
47
>>> s = sorted(student_objects, key=attrgetter('age')) # по вторичному ключу >>> sorted(s, key=attrgetter('grade'), reverse=True) # по первичному [('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]<p><em>Остались вопросы? Хотите поделиться своим личным опытом работы со списками? Нашли ошибку в тексте? Пишите комментарий!</em></p>
48
48