Списки в Python. Методы и функции List в Python 3

Python

Списки в Python. Методы и функции List в Python 3

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

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

1. Как создать список?

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

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

# Пустой список
my_list = []

# Список целых чисел
my_list = [1, 2, 3]

# Список со смешанными типами данных
my_list = [1, "Hello", 3.4]

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

# Вложенный список
my_list = ["mouse", [8, 4, 6], ['a']]

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

Рассмотрим два способа доступа к элементам списка.

2.1 Индексация списка

Мы можем использовать оператор индекса [] для доступа к элементу в списке. Индекс начинается с 0. Список из 5 элементов будет иметь индекс от 0 до 4.

Попытка получить доступ к элементу за пределами диапазона, вызовет IndexError. Индекс должен быть целым числом. Мы не можем использовать float или другие типы, это приведет к TypeError.

Доступ к вложенному списку осуществляется с помощью вложенной индексации.

my_list = ['p','r','o','b','e']
# Output: p
print(my_list[0])

# Output: o
print(my_list[2])

# Output: e
print(my_list[4])

# Ошибка! Для индексации можно использовать только целое число 
# my_list[4.0]

# Вложенный список
n_list = ["Happy", [2,0,1,5]]

# Вложенная индексация

# Output: a
print(n_list[0][1])    

# Output: 5
print(n_list[1][3])

2.2 Отрицательная индексация

Python допускает отрицательную индексацию для своих последовательностей. Индекс -1 относится к последнему элементу, -2 — ко второму с конца элементу и т. д.

my_list = ['p','r','o','b','e']

# Output: e
print(my_list[-1])

# Output: p
print(my_list[-5])

3. Как делать срезы списков в Python?

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

my_list = ['p','r','o','g','r','a','m','i','z']
# Элементы с 3-го по 5-й
print(my_list[2:5])

# Элементы, начиная с 4-го
print(my_list[:-5])

# Элементы с шестого до конца 
print(my_list[5:])

# Элементы от начала до конца
print(my_list[:])

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

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

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

Мы можем использовать оператор присваивания (=), чтобы изменить элемент или диапазон элементов.

# Элементы, которые будем менять
odd = [2, 4, 6, 8]

# Меняем 1-й элемент   
odd[0] = 1        
    
# Output: [1, 4, 6, 8]
print(odd)

# Меняем со 2-го по 4-й элементы
odd[1:4] = [3, 5, 7]  

# Output: [1, 3, 5, 7]
print(odd)       

Мы можем добавить один элемент в список с помощью метода append() или добавить несколько элементов с помощью метода extended().

odd = [1, 3, 5]

odd.append(7)

# Output: [1, 3, 5, 7]
print(odd)

odd.extend([9, 11, 13])

# Output: [1, 3, 5, 7, 9, 11, 13]
print(odd)

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

Оператор * повторяет список заданное количество раз.

odd = [1, 3, 5]

# Output: [1, 3, 5, 9, 7, 5]
print(odd + [9, 7, 5])

# Output: ["re", "re", "re"]
print(["re"] * 3)

Кроме того, мы можем вставить один элемент в нужное место с помощью метода insert() или вставить несколько элементов, втиснув его в пустой фрагмент списка.

odd = [1, 9]
odd.insert(1,3)

# Output: [1, 3, 9] 
print(odd)

odd[2:2] = [5, 7]

# Output: [1, 3, 5, 7, 9]
print(odd)

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

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

my_list = ['p','r','o','b','l','e','m']

# Удаляем один элемент
del my_list[2]

# Output: ['p', 'r', 'b', 'l', 'e', 'm']     
print(my_list)

# Удаляем несколько элементов
del my_list[1:5]  

# Output: ['p', 'm']
print(my_list)

# Удаляем весь список
del my_list    
   
# Ошибка: список не определен
print(my_list)

Мы можем использовать метод remove() для удаления данного элемента или метод pop() для удаления элемента по указанному индексу.

Метод pop() удаляет и возвращает последний элемент, если индекс не указан. Это помогает нам реализовывать списки в виде стеков (структура данных «первый вошел, последний вышел»).

Мы также можем использовать метод clear() для очистки списка.

my_list = ['p','r','o','b','l','e','m']
my_list.remove('p')

# Output: ['r', 'o', 'b', 'l', 'e', 'm']
print(my_list)

# Output: 'o'
print(my_list.pop(1))

# Output: ['r', 'b', 'l', 'e', 'm']
print(my_list)

# Output: 'm'
print(my_list.pop())

# Output: ['r', 'b', 'l', 'e']
print(my_list)

my_list.clear()

# Output: []
print(my_list)

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

>>> my_list = ['p','r','o','b','l','e','m']
>>> my_list[2:3] = []
>>> my_list
['p', 'r', 'b', 'l', 'e', 'm']
>>> my_list[2:5] = []
>>> my_list
['p', 'r', 'm']

6. Методы списка Python

Методы, которые доступны для объекта list в программировании на Python, приведены в таблице ниже.

Они доступны как list.method(). Некоторые из методов уже были показаны выше.

Методы списка Python
append()Добавляет элемент в конец списка
extend()Добавляет все элементы списка в другой список
insert()Вставить элемент по указанному индексу
remove()Удаляет элемент из списка
pop()Удаляет и возвращает элемент по указанному индексу
clear()Удаляет все элементы из списка
index()Возвращает индекс первого соответствующего элемента
count()Возвращает количество элементов, переданных в качестве аргумента
sort()Сортировка элементов в списке в порядке возрастания
reverse()Обратный порядок элементов в списке
copy()Возвращает поверхностную копию списка

Некоторые примеры методов списка Python:

my_list = [3, 8, 1, 6, 0, 8, 4]

# Output: 1
print(my_list.index(8))

# Output: 2
print(my_list.count(8))

my_list.sort()

# Output: [0, 1, 3, 4, 6, 8, 8]
print(my_list)

my_list.reverse()

# Output: [8, 8, 6, 4, 3, 1, 0]
print(my_list)

6.1 Метод List Append

Метод append() добавляет элемент в конец списка. Длина списка увеличивается на один. 

Примечание:

  • Данная функция не возвращает новый список, а просто записывает значение параметра в существующий.
  • По сути, append() является аналогом метода push() в других языках программирования.
lst = [1, 3, 8, 12]

# Вставляем число в конец списка
lst.append(7)

# Output: [1, 3, 8, 12, 7]
print(lst)

6.2 Метод List Extend

Функция extend() расширяет список, добавляя все элементы списка, передаваемого в качестве аргумента, в конец.

Примечание:

  • В отличии от append() в методе extend() можно передавать в качестве параметра список целиком, а не только одно значение.
  • Данный метод, также как и append(), не создает новый список, а изменяет существующий.
lst = [1, 3, 8]

# Вставляем новый список в конец списка lst
lst.extend([2, 7])

# Output: [1, 3, 8, 2, 7]
print(lst)

6.3 Метод List Insert

Метод insert(idx, x) вставляет элемент в список по заданному индексу.

Параметры функции:

  • idx — позиция, где элемент должен быть вставлен
  • x — элемент, который будет вставлен в список

lst = [1, 3]

# Вставляем число 2 в список на позиции 1
lst.insert(1, 2)

# Output:  [1, 2, 3]
print(lst)

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

lst = [1, 3]

# Вставляем число 2 в начало списка
lst.insert(0, 2)

# Output:  [2, 1, 3]
print(lst)

6.4 Метод List Count

Методcount() возвращает количество вхождений элемента в список.

lst = [4, 1, 5, 4, 0, 4]

# Определяем количество чисел 4 в списке lst
# с помощью функции count()

# Output:  3
print(lst.count(4))

6.5 Метод List Index

Метод index(x, start, end) возвращает индекс элемента в списке.

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

Параметры функции:

  • x — элемент, наименьший индекс которого будет возвращен.
  • start (не обязательный параметр) — позиция, с которой начинается поиск
  • end (не обязательный параметр) — позиция, на которой закончится поиск

Возвращаемые значения: 

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

Ошибки:

  • Если элемент не найден, возвращается ошибка ValueError
lst = [2, 3, 5, 2, 10, 7]

# Узнаем позицию числа 2
# с помощью функции index()

# Output:  0
print(lst.index(2))

Примечание: Индексы в Python начинаются с 0, а не с 1.

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

lst = [2, 3, 5, 2, 10, 7]

# Получаем позицию числа 2 в диапазоне с индекса 3 по 5
# используя функцию index()

# Output:  3
print(lst.index(2, 3, 5))

6.6 Метод List Pop

Метод pop(idx) — это функция, которая возвращает и удаляет значение из списка по заданному индексу.

Параметры функции:

  • idx (не обязательный параметр) — значение индекса элемента, который будет получен из списка и удален из него.

Ошибки:

  • Если индекс выходит за пределы диапазона, возвращается IndexError

 

lst = [1, 3, 8, 12]

# Output:  3
print(lst.pop(1))

# Output:  [1, 8, 12]
print(lst)

Примечание: Если индекс не у казан, то будет взят и удален из списка последний элемент.

lst = [1, 3, 8, 12]

# Output:  12
print(lst.pop())

# Output:  [1, 3, 8]
print(lst)

6.7 Метод List Remove

Метод remove(x) — удаляет элемент из списка по значению. 

Параметры функции:

  • x — элемент, который будет убран из списка.

Примечание: Функция удаляет первое вхождение объекта из списка.

lst = [1, 3, 8, 12, 7]

# Убираем значение 8 из списка
lst.remove(8)

# Output:  [1, 3, 12, 7]
print(lst)

6.8 Метод List Clear

Метод clear() очищает список, удаляя все элементы.

lst = [1, 3, 8, 12, 7]

# Самый простой способ очистить список
lst.clear()

# Output:  []
print(lst)

6.9 Метод List Copy

Метод copy() возвращает поверхностную (без рекурсивного копирования вложенных элементов) копию списка.

old_lst = [1, 3, 8, 12, 7]

# Производим копирование списка
new_lst = old_lst.copy()

# Изменяем список
new_lst.append(8)

# Output:  [1, 3, 8, 12, 7]
print(old_lst)

# Output:  [1, 3, 8, 12, 7, 8]
print(new_lst)

Примечание:

  • Если вы скопируете список с помощью оператора =. Например так new_lst = old_lst, то при изменении new_lst также изменится и old_lst.
  • Если список имеет вложенные списки, то для копирования необходимо использовать copy.deepcopy(x)
  • Функция copy() работает также как выражение new_lst = old_lst[:]

6.10 Метод List Reverse

Функция reverse() инвертирует список, то есть переворачивает список в обратном порядке.

lst = [1, 3, 8, 12, 7]

#  Инвертируем список
lst.reverse()

# Output:  [7, 12, 8, 3, 1]
print(lst)

Примечание: Реверс списка можно произвести с помощью выражения lst = lst[::-1]

6.11 Метод List Sort

lst = [1, 3, 8, 12, 7]

#  Сортировка списка
lst.sort()

# Output:  [1, 3, 7, 8, 12]
print(lst)

7. Списковое включение (List comprehension): элегантный способ создания нового списка

Понимание списка — это элегантный и лаконичный способ создания нового списка из существующего списка в Python.

Понимание списка состоит из выражения, за которым следует оператор for в квадратных скобках.

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

pow2 = [2 ** x for x in range(10)]

# Output: [1, 2, 4, 8, 16, 32, 64, 128, 256, 512]
print(pow2)

Этот код эквивалентен

pow2 = []
for x in range(10):
    pow2.append(2 ** x)

Понимание списка может дополнительно содержать операторы for или if. Необязательный оператор if может отфильтровывать элементы для нового списка. Вот несколько примеров.

>>> pow2 = [2 ** x for x in range(10) if x > 5]
>>> pow2
[64, 128, 256, 512]
>>> odd = [x for x in range(20) if x % 2 == 1]
>>> odd
[1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
>>> [x+y for x in ['Python ','C '] for y in ['Language','Programming']]
['Python Language', 'Python Programming', 'C Language', 'C Programming']

8. Другие операции со списками в Python

8.1 Тест вхождения элемента в список

Мы можем проверить, существует ли элемент в списке или нет, используя ключевое слово in.

my_list = ['p','r','o','b','l','e','m']

# Output: True
print('p' in my_list)

# Output: False
print('a' in my_list)

# Output: True
print('c' not in my_list)

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

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

for fruit in ['apple','banana','mango']:
    print("I like",fruit)
12:09
8433
RSS
Нет комментариев. Ваш будет первым!

Авторизация

Войдите, используя Ваш аккаунт

Войти с помощью

Пользователи

Skyeng
GeekBrains
Lingualeo