Списки Python
Списки — это один из 4 типов данных в Python, используемых для хранения коллекций данных.
# Список: упорядоченная коллекция элементов, заключенных в квадратные скобки
['John', 'Peter', 'Debora', 'Charles']
Получение значений по индексам
# Доступ к элементам списка с использованием индекса (начиная с 0, первый элемент имеет индекс 0)
furniture = ['table', 'chair', 'rack', 'shelf']
furniture[0] # Возвращает первый элемент: 'table'
'table'
furniture[1]
'chair'
furniture[2]
'rack'
furniture[3]
'shelf'
Отрицательные индексы
# Отрицательный индекс: доступ к элементам с конца списка
furniture = ['table', 'chair', 'rack', 'shelf']
furniture[-1] # Возвращает последний элемент: 'shelf'
'shelf'
furniture[-3]
'chair'
f'The {furniture[-1]} is bigger than the {furniture[-3]}'
'The shelf is bigger than the chair'
Войдите в систему, чтобы ответить на эту викторину и отслеживать свой прогресс обучения
furniture[-1], если furniture = ['table', 'chair', 'rack', 'shelf']?'table''shelf'['shelf']IndexErrorПолучение подсписков с помощью срезов (Slices)
# Срез: получение подсписка с использованием синтаксиса [start:end] (end не включается)
furniture = ['table', 'chair', 'rack', 'shelf']
furniture[0:4] # Возвращает элементы с индекса 0 по 3 (4 исключается)
['table', 'chair', 'rack', 'shelf']
furniture[1:3]
['chair', 'rack']
furniture[0:-1]
['table', 'chair', 'rack']
# Срез от начала: пропустить начальный индекс (по умолчанию 0)
furniture[:2] # Возвращает первые два элемента
['table', 'chair']
# Срез до конца: пропустить конечный индекс (по умолчанию до конца списка)
furniture[1:] # Возвращает все элементы с индекса 1 до конца
['chair', 'rack', 'shelf']
furniture[:]
['table', 'chair', 'rack', 'shelf']
Создание среза всего списка выполнит копирование:
# Срез создает копию: [:] создает неглубокую копию списка
spam = ['cat', 'bat', 'rat', 'elephant']
spam2 = spam[:] # Создать копию, а не ссылку
spam2
['cat', 'bat', 'rat', 'elephant']
spam.append('dog')
spam
['cat', 'bat', 'rat', 'elephant', 'dog']
spam2
['cat', 'bat', 'rat', 'elephant']
Войдите в систему, чтобы ответить на эту викторину и отслеживать свой прогресс обучения
spam[:], когда spam — это список?Получение длины списка с помощью len()
# len() возвращает количество элементов в списке
furniture = ['table', 'chair', 'rack', 'shelf']
len(furniture) # Возвращает 4
4
Изменение значений по индексам
# Изменение элементов списка путем присвоения новых значений индексам
furniture = ['table', 'chair', 'rack', 'shelf']
furniture[0] = 'desk' # Заменить первый элемент
furniture
['desk', 'chair', 'rack', 'shelf']
furniture[2] = furniture[1]
furniture
['desk', 'chair', 'chair', 'shelf']
furniture[-1] = 'bed'
furniture
['desk', 'chair', 'chair', 'bed']
Объединение и повторение
# Объединение списков: объединение двух списков с помощью оператора +
[1, 2, 3] + ['A', 'B', 'C'] # Возвращает [1, 2, 3, 'A', 'B', 'C']
[1, 2, 3, 'A', 'B', 'C']
# Повторение списка: повторение списка несколько раз с помощью оператора *
['X', 'Y', 'Z'] * 3 # Возвращает ['X', 'Y', 'Z', 'X', 'Y', 'Z', 'X', 'Y', 'Z']
['X', 'Y', 'Z', 'X', 'Y', 'Z', 'X', 'Y', 'Z']
my_list = [1, 2, 3]
my_list = my_list + ['A', 'B', 'C']
my_list
[1, 2, 3, 'A', 'B', 'C']
Использование циклов for со списками
# Итерация по элементам списка с помощью цикла for
furniture = ['table', 'chair', 'rack', 'shelf']
for item in furniture: # Цикл по каждому элементу
print(item)
table
chair
rack
shelf
Получение индекса в цикле с помощью enumerate()
# enumerate() возвращает и индекс, и значение в цикле
furniture = ['table', 'chair', 'rack', 'shelf']
for index, item in enumerate(furniture): # Получить индекс и элемент вместе
print(f'index: {index} - item: {item}')
index: 0 - item: table
index: 1 - item: chair
index: 2 - item: rack
index: 3 - item: shelf
Цикл по нескольким спискам с помощью zip()
# zip() объединяет несколько списков попарно в цикле
furniture = ['table', 'chair', 'rack', 'shelf']
price = [100, 50, 80, 40]
for item, amount in zip(furniture, price): # Сопоставить элементы из обоих списков
print(f'The {item} costs ${amount}')
The table costs $100
The chair costs $50
The rack costs $80
The shelf costs $40
Операторы in и not in
# Оператор in: проверка наличия элемента в списке
'rack' in ['table', 'chair', 'rack', 'shelf'] # Возвращает True
True
'bed' in ['table', 'chair', 'rack', 'shelf']
False
furniture = ['table', 'chair', 'rack', 'shelf']
'bed' not in furniture
True
'rack' not in furniture
False
Трюк с множественным присваиванием
Трюк с множественным присваиванием — это ярлык, который позволяет присвоить несколько переменных значениям из списка в одной строке кода. Вместо того чтобы делать так:
furniture = ['table', 'chair', 'rack', 'shelf']
table = furniture[0]
chair = furniture[1]
rack = furniture[2]
shelf = furniture[3]
Вы можете написать эту строку кода:
furniture = ['table', 'chair', 'rack', 'shelf']
table, chair, rack, shelf = furniture
table
'table'
chair
'chair'
rack
'rack'
shelf
'shelf'
Трюк с множественным присваиванием также можно использовать для обмена значениями двух переменных:
a, b = 'table', 'chair'
a, b = b, a
print(a)
chair
print(b)
table
Метод index
Метод index позволяет найти индекс значения, передав его имя:
furniture = ['table', 'chair', 'rack', 'shelf']
furniture.index('chair')
1
Добавление значений
append()
append добавляет элемент в конец list:
furniture = ['table', 'chair', 'rack', 'shelf']
furniture.append('bed')
furniture
['table', 'chair', 'rack', 'shelf', 'bed']
Войдите в систему, чтобы ответить на эту викторину и отслеживать свой прогресс обучения
append() со списком?insert()
insert добавляет элемент в list в заданную позицию:
furniture = ['table', 'chair', 'rack', 'shelf']
furniture.insert(1, 'bed')
furniture
['table', 'bed', 'chair', 'rack', 'shelf']
Удаление значений
del
del удаляет элемент по индексу:
furniture = ['table', 'chair', 'rack', 'shelf']
del furniture[2]
furniture
['table', 'chair', 'shelf']
del furniture[2]
furniture
['table', 'chair']
remove()
remove удаляет элемент по его фактическому значению:
furniture = ['table', 'chair', 'rack', 'shelf']
furniture.remove('chair')
furniture
['table', 'rack', 'shelf']
Удаление повторяющихся элементов
Если значение встречается в списке несколько раз, будет удален только первый экземпляр этого значения.
pop()
По умолчанию pop удаляет и возвращает последний элемент списка. Вы также можете передать индекс элемента в качестве необязательного параметра:
animals = ['cat', 'bat', 'rat', 'elephant']
animals.pop()
'elephant'
animals
['cat', 'bat', 'rat']
animals.pop(0)
'cat'
animals
['bat', 'rat']
Войдите в систему, чтобы ответить на эту викторину и отслеживать свой прогресс обучения
pop() при вызове для списка?Сортировка значений с помощью sort()
numbers = [2, 5, 3.14, 1, -7]
numbers.sort()
numbers
[-7, 1, 2, 3.14, 5]
furniture = ['table', 'chair', 'rack', 'shelf']
furniture.sort()
furniture
['chair', 'rack', 'shelf', 'table']
Вы также можете передать True для именованного аргумента reverse, чтобы sort() отсортировал значения в обратном порядке:
furniture.sort(reverse=True)
furniture
['table', 'shelf', 'rack', 'chair']
Если вам нужно отсортировать значения в обычном алфавитном порядке, передайте str.lower для именованного аргумента key в вызове метода sort():
letters = ['a', 'z', 'A', 'Z']
letters.sort(key=str.lower)
letters
['a', 'A', 'z', 'Z']
Вы можете использовать встроенную функцию sorted, чтобы вернуть новый список:
furniture = ['table', 'chair', 'rack', 'shelf']
sorted(furniture)
['chair', 'rack', 'shelf', 'table']
Тип данных Tuple
Ключевое различие между кортежами и списками заключается в том, что, хотя кортежи являются неизменяемыми объектами, списки являются изменяемыми. Это означает, что кортежи нельзя изменять, в то время как списки можно изменять. Кортежи более эффективны по памяти, чем списки.
furniture = ('table', 'chair', 'rack', 'shelf')
furniture[0]
'table'
furniture[1:3]
('chair', 'rack')
len(furniture)
4
Основное отличие кортежей от списков заключается в том, что кортежи, как и строки, неизменяемы.
Преобразование между list() и tuple()
tuple(['cat', 'dog', 5])
('cat', 'dog', 5)
list(('cat', 'dog', 5))
['cat', 'dog', 5]
list('hello')
['h', 'e', 'l', 'l', 'o']
Войдите в систему, чтобы ответить на эту викторину и отслеживать свой прогресс обучения