Документация по Python. Теоретические материалы, и практические задачи

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

Работа со списками в 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)

Результат:

Я люблю Яблоко

Я люблю Банан

Я люблю Груша

Я люблю Клубника

Оставьте комментарий

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