Урок 8. Cписки


Мы с вами продолжаем изучение Python и сегоднешняя тема - списки(list). Если вы опять таки прищли ид другого языка программирования, то для вас будет проще если я вам скажу, что списки - это массивы. Если вы новичок в программировании, то давайте побробуем понять, что такое массивы или списки. Итак, мы уже знакомы с переменными и знаем, что в переменную можно хранить значение. Но это, будет только одно значение и это может быть значение только одного типа. Тюе мы положим положить в переменную число, строку, либо присвоить булеву константу. Списки в Python - изменяемая коллекция объектов произвольных типов. Это значит, что в список мы можем поместить сколько угодно значений и при это разных типов. Если мы переменную стравнивали с контейнером, то список можно сравнивать многоквартирным домом, где мы заходим в подъезд и мы обращаемся по какому-то номеру квартира, чобы достучаться до того, кто там живёт. В нашем случае, это значение. Попробуем создать списки, узнаем способы создания списка и как - то манипулировать. В Python есть несколько вариантов создания списков и самый простой из них - это использование квадратных скобок.

Создание списка. Вариант 1

l = [] # пустой список
print(type(l)) # Вывод: <class 'list'>

l2 = [1, 2, 3, 'hello', ['hi', 'hi'], True, False]
print(l2) # Вывод:  [1, 2, 3, 'hello', ['hi', 'hi'], True, False] 

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

Создание списка. Вариант 2

l = list('hello') # меняем со строки в список
print(type(l)) # Вывод: <class 'list'>
print(l)  # Вывод: ['h', 'e', 'l', 'l', 'o']

2 вариант производится через c помощью функции list. Функция list позволяет создать список из любого итерируемого объекта. А мы уже знаем, что к итерируемым последовательностям, в частности, относится и строка. Если мы напишем строку "hello", то внутри нашего списка окажется набор символов.

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

  • Функция range
  • Цикд for. Здесь он выстпуает не в качестве цикла for, а в качестве генератора списков
В процессе генерирования вы можете пропускать несколько пробелов и делается это с помощью конструкции if.

Создание списка. Вариант 3

l1 = [i  for i in 'hello world']
print(l1) # Вывод: ['h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd']

l2 = [i for i in 'hello world' if i != ' ']
print(l2) # Вывод: ['h', 'e', 'l', 'l', 'o', 'w', 'o', 'r', 'l', 'd']  Получили тот  же самый результат, но без прообела

l3 = [i for i in 'hello world' if i not in ['a', 'e', 'u', 'i', 'o']]  # исключаем все гласные буквы
print(l3) # Вывод: ['h', 'l', 'l', ' ', 'w', 'r', 'l', 'd']

l4 = [i * 2 for i in 'hello world'] # задвоение символов
print(l4) # Вывод: ['hh', 'ee', 'll', 'll', 'oo', '  ', 'ww', 'oo', 'rr', 'll', 'dd']



Функция range(диапазон) генерирует последовательность. Он может принимать всего три параметра. range(start(начало), stop(конец), step(шаг)). По умолчаню start(начало) = 0, a step(шаг) = 1.

Можно указать все параметры => range(start, stop, step)

Можно указать только параметр stop, при этом параметр start по умолчанию будет равен 0 => range(stop)

Можно указать два параметра start и stop, при этом step по умолчанию будет равен 1 => range(start, stop)

Создание списка. Вариант 3

l = list(range(11)) # 11 - параметр stop
print(l) # Вывод: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

l = list(range(5, 10)) # 5 - параметр start, 10 - параметр stop
print(l) # Вывод: [5, 6, 7, 8, 9]

l = list(range(5, 15, 3)) # 5 - параметр start, 15 - параметр stop, 3 - параметр step
print(l) # Вывод: [5, 8, 11, 14]

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

Как обратиться к определённому элементу из списка?

names = ['Ivan', 'Petr', 'Alex']
print(names[0]) # Ivan
print(names[1]) # Petr
print(names[2]) # Alex
print(names[:2]) # ['Ivan', 'Petr']  это был срез


Если попытаться обратиться к несуществующему элементу, компилятор выведит следующую ошибку:

 list index out of range.
Вы можете выводить не только один элемент из списка, но вы можете получить сразу нескольок элементов. Т.е вы можете использовать срезы. Если вы не знаете, что такое срезы, переходите по ссылке: Урок 5. Строки

Метод Операция
len(a) Длина cписка
a.index(x, [start],[end]) Поиск элемента в списке. Возвращает номер первого вхождения или вызывает ValueError, если x не найден
a.count(x) Возвращает количество элементов со значением х в диапазоне [начало, конец] (по умолчанию: начало, start = 0; конец, end = длине cписка)
a.append(x) Добавляет элемент в конец списка
a.extend(x) Расширяет список а, добавляя в ноце все элементы списка x
a.insert(i, x) Вставляет на i-ю позицию значени x
a.remove(x) удаляет первый элемент в списке, имеющий значение x. Возвращает ValueError, если такого элемента не существует.
a.pop(i) удаляет i-ый элемент в списке. Если индекс не указан, удаляется последний элемент
a.sort() сортирует список по возрастанию
a.reverse() разворачивает список
a.copy() возвращает копию списка
a.clear() очищает список

Работа с методами списка

l = ['hi', 1, 2, True, 1.2, 3, 7, 12, 'hello world', False, 7]
print(len(l))		# 11

print(l.index(7))		# 6

print(l.count(7))		# 2

l2 = [1, 2, 3, 4]
l2.append(5)
l2.append(5)
print(l2)		# [1, 2, 3, 4, 5]

l3 = [1, 2, 3, 'hi']
l4 = ['hello', 4, 5, 6]
l3.extend(l4)
print(l3)		# [1, 2, 3, 'hi', 'hello', 4, 5, 6]

l5 = ['a', 'b', False, True, 1, 2]
l5.insert(2, 'c')
print(l5)		# ['a', 'b', 'c', False, True, 1, 2]

l5.remove('c') # удаляем первый элемент, равный 'c'
print(l5)		# ['a', 'b', False, True, 1, 2]

l6 = ['py', 'th', 'on']
l6.pop()		# удаляем последний элемент
l6.pop(0)		# удаляем первый элемент
print(l6)		# ['th']

l7 = [2, 2, 0, 1, 1, 4]
l7.sort()
print(l7)		# [0, 1, 1, 2, 2, 4]


l8 = ['hse', 'codes', '.', 'com']
l8.reverse()
print(l8)		# ['com', '.', 'codes', 'hse']

l9 = l.copy()
print(l9)		# ['hi', 1, 2, True, 1.2, 3, 7, 12, 'hello world', False, 7]

l.clear()
print(l)		# [] - пустой список или массив

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


Комментарии

Чтобы написать комментарии вам нужно войти в систему или зарегистрироваться