Работа со списками в Python — довольно объемная часть, но хочу сразу отметить, что нет ничего сложного, все доступно и просто,если возникают вопросы, пишите свои вопросы в комментариях.
В прошлой статье, мы довольно хорошо изучили работу с числами, в этой статье так же продолжим изучать типы данных python. На очереди у нас списки, разберем создание списков, срезы, добавление, удаление элементов.
Как создать список?
Сразу определимся с тем, что список может содержать практические любые типы данных, int() , float(), string() и.т.д. Ниже рассмотрим списки, с различным содержанием.
list = [] #пустой список list2 = [1,2,3,4] #int список list3 = [1,2,'hello world',3.5] #список с комбинированными данными
Так же, список может содержать внутри себя еще один список.
list = [1,2,[23,'hello',21],5,7,8]
Индекс списка
Счет индекса в списках, в целом как и в программировании начинается с 0, таким образом список который имеет 5 элементов, будет иметь индекс от 0 до 4.
Оператором для получения нужного элемента являются квадратные скобки []. Если мы обратимся к несуществующему индексу, то получим ошибку IndexError. Индекс — это всегда целое число, и никак иначе. Доступ к вложенным спискам, так же осуществляется с помощью вложенной индексации, и так, поехали обкатывать теорию.
my_list = ['p', 'r', 'o', 'b', 'e'] #Наш список от 0 до 4 print(my_list[0]) # Первый элемент p print(my_list[2]) #Третий элемент o print(my_list[4]) # Пятый элемент e n_list = ["Happy", [2, 0, 1, 5]]#Смешанный список print(n_list[0][1]) # Второй элемент из первого списка a print(n_list[1][3]) # Четвертый элемент из второго списка 5 print(my_list[4.0]) # Будет ошибка, так как индекс не является целым числом
Так же в Python есть и отрицательная индексация.
my_list = ['p','r','o','b','e'] print(my_list[-1]) # последний элемент списка e print(my_list[-5]) # Первый элемент списка p
Нарезка списков/Срезы
При обычной индексации, мы получали доступ к одному элементу списка, с помощью срезов, мы можем получить доступ к целому ряду элементов. Оператором среза является символ двоеточия : .
# List slicing in Python my_list = ['p','y','d','o','c','s','.','r','u'] print(my_list[2:5]) # ['d','o',c] - элементы от 2 до 5 print(my_list[:-5]) # ['p','y','d','o'] - первые 4 элемента print(my_list[5:]) # ['s','.','r','u'] print(my_list[:]) # ['p','y','d','o','c','s','.','r','u']
Срезы на мой взгляд для лучшего понимания, стоит визуализировать. Но в целом логи среза довольна проста, и удобна. Если мы хотим получить диапазон элементов, мы берем два индекса, для среза той части, которая нас интересует.
Добавление/Изменение элементов списка
Как мы помним из статьи про типы данных, списки могут изменять значение своих элементов, в отличии от строк, или кортежа. Для изменения элемента, мы можем воспользоваться знакомым нам оператором присваивания =. Рассмотрим пример:
list = [1,2,3,4,5] list[0] = 5 #Первому элементу списка присваиваем 5 print(list) Результат: [5,2,3,4,5] list[1:4] = [4,6,8] # Заменяем диапазон элементов print(list) Результат: [1,4,6,8,5]
Добавление новых элементов списка происходит так же просто. Если мы хотим добавить один элемент, используем метод append(), если хотим добавить несколько элементов, то метод extend().
list = [1,3,5,7] list.append(6) print(list) Результат: [1,3,5,7,6] list.extend([9,20,25]) print(list) Результат: [1,3,5,7,9,20,25]
Так же не забываем и про оператор +, с помощью него, можно объединить два списка. Так же это называется и конкатенацией. И так же мы можем использовать оператор *, который повторит элемент в списке указанное количество раз. Пример:
list = [1,2,3] print(list + [9,8,7,]) Результат: [1,2,3,9,8,7] print(["pydocs"] * 3) Результат: ["pydocs","pydocs","pydocs"]
Удалить элемент из списка
Как и в примере с добавление элементов, мы так же можем удалить один или несколько элементов из списка. Для удаление используется ключевое слово del.
# Удаление элементов списка my_list = ['p', 'r', 'o', 'b', 'l', 'e', 'm'] # Удаление одного элемента del my_list[2] print(my_list) # Удаление диапазона элементов del my_list[1:5] print(my_list) # Удаление всего списка del my_list
По мимо вышеописанного, мы так же можем воспользоваться методами списка. Метод remove(), для удаление элемента, или метод pop() для удаления элемента с заданным индексом.
Метод pop() удаляет и возвращает последний элемент если не указан индекс. Так же для очистки всего списка, мы можем воспользоваться методом clear().
list = ['p','r','o','b','l','e','m'] list.remove('p') print(list) # Результат ['r','o','b','l','e','m'] print(list.pop(1)) #Результат o print(list) # Результат ['r', 'b', 'l', 'e', 'm'] print(list.pop()) #Результат m list.clear() print(list) #Результат []
Методы списка Python
Методы списка Python |
append() - Добавить элемент в конец списка |
extend() - Добавить все элементы списка в другой список |
insert() - Вставить элемент в определенный индекс |
remove() - Удаляет элемент из списка. |
pop() - Удаляет и возвращает элемент с заданным индексом |
clear() - Удаляет все элементы из списка |
index() - Возвращает индекс первого совпадающего элемента |
count() - Возвращает количество элементов, переданных в качестве аргумента |
sort() - Сортировка элементов в списке в порядке возрастания |
reverse() - Обратный порядок элементов в списке |
Генерирование списка
В качестве примера, для генерации списка, рассмотрим вариант списка, где каждый последующий элемент увеличивается в два раза, определенное количество раз.
list = [2 ** x for x in range(10)] print(list) Результат: [1, 2, 4, 8, 16, 32, 64, 128, 256, 512] #Код получился в одну строку, ниже эквивалент этого же кода list = [] for x in range(10): list.append(2 ** x) Результат: [1, 2, 4, 8, 16, 32, 64, 128, 256, 512]
Генератор списков, так же может содержать в себе и определенные условия, по которым будет генерироваться список.
list = [2 ** x for x in range(10) if x > 5] print(list) Результат: [64, 128, 256, 512] list2 = [x for x in range(20) if x % 2 == 1] print(list2) [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
Проверка наличия элемента в списке
С помощью ключевого слова in, мы можем проверить существование элемента в списке.
list = ['p','r','o','b','l','e','m'] print('p' in list) print('a', in list) print('c' not in list) Результат: True False True
Итерация по списку
Итерацию по списку мы с вами рассматривали в статье про цикл for, немного повторим пройденный материал.
list = ['Яблоко', 'Банан','Груша','Клубника' ] for fruct in list: print("Я люблю", fruct) Результат: Я люблю Яблоко Я люблю Банан Я люблю Груша Я люблю Клубника