Слайд 1
📘 Основы работы со списками
Работа со списками во многом напоминает работу со строками, так как и там, и там мы имеем дело с элементами последовательности. Но есть важное различие: элементы списка могут быть любого типа, а элементы строки — всегда символы.
🔹 Функция len()
Функция len() возвращает длину списка — количество его элементов.
numbers = [2, 4, 6, 8, 10]
languages = ['Python', 'C#', 'C++', 'Java']
print(len(numbers)) # 5
print(len(languages)) # 4
print(len(['apple', 'banana', 'cherry'])) # 3
🔹 Оператор принадлежности in
Оператор in проверяет, содержится ли элемент в списке.
numbers = [2, 4, 6, 8, 10]
if 2 in numbers:
print('Список numbers содержит число 2')
else:
print('Список numbers не содержит число 2')
Результат: Список numbers содержит число 2
Можно использовать и отрицание:
if 0 not in numbers:
print('Список numbers не содержит нулей')
🔹 Индексация
Индексация в списках работает аналогично строкам: первый элемент имеет индекс 0.
numbers = [2, 4, 6, 8, 10]
print(numbers[0]) # 2
print(numbers[-1]) # 10
При попытке обратиться к несуществующему элементу возникает ошибка:
print(numbers[17])
# IndexError: index out of range
🔹 Изменение элементов списка
В отличие от строк, элементы списка можно изменять:
fruits = ['apple', 'apricot', 'banana', 'cherry', 'kiwi']
fruits[2] = 'orange'
fruits[-1] = 'peach'
print(fruits)
# ['apple', 'apricot', 'orange', 'cherry', 'peach']
🔹 Срезы списков
Срез позволяет получить подсписок из нескольких элементов.
numbers = [2, 4, 6, 8, 10]
print(numbers[1:3]) # [4, 6]
print(numbers[2:]) # [6, 8, 10]
print(numbers[:4]) # [2, 4, 6, 8]
Срез numbers[:] возвращает копию списка.
Пример изменения диапазона элементов:
fruits = ['apple', 'apricot', 'banana', 'cherry', 'kiwi', 'lemon']
fruits[2:5] = ['банан', 'вишня', 'киви']
print(fruits)
# ['apple', 'apricot', 'банан', 'вишня', 'киви', 'lemon']
🔹 Конкатенация и умножение на число
Списки можно складывать и умножать на число — как строки.
print([1, 2, 3] + [4, 5]) # [1, 2, 3, 4, 5]
print([7, 8] * 3) # [7, 8, 7, 8, 7, 8]
print([0] * 10) # [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
Укороченные формы тоже работают:
a = [1, 2, 3, 4]
b = [7, 8]
a += b
b *= 5
print(a) # [1, 2, 3, 4, 7, 8]
print(b) # [7, 8, 7, 8, 7, 8, 7, 8, 7, 8]
🔹 Функции sum(), min(), max()
sum() возвращает сумму всех чисел в списке:
numbers = [1, 2, 3, 4, 5]
print(sum(numbers)) # 15
min() и max() возвращают минимальный и максимальный элемент:
numbers = [3, 4, 10, -7, 12]
print(min(numbers)) # -7
print(max(numbers)) # 12
Эти функции также работают со строками:
names = ['Monica', 'Joey', 'Gunther', 'Chandler']
print(max(names)) # Monica
🔹 Отличие списков от строк
Главное отличие: строки неизменяемы, а списки изменяемы.
s = 'abcdefg'
s[1] = 'x' # Ошибка!
# TypeError: 'str' object does not support item assignment
Со списками всё работает:
numbers = [1, 2, 3, 4, 5]
numbers[1] = 101
print(numbers)
# [1, 101, 3, 4, 5]
📘 Примечания
- Если элемент списка — строка, можно использовать «двойной индекс»:
books = ['1984', 'О дивный новый мир', '451 градус по Фаренгейту']
print(books[0][1]) # 9
print(books[2][4:10]) # градус
- Обращение по индексу возвращает элемент, а срез возвращает новый список (даже если в нём один элемент):
artists = ['Malevich', 'Vasnetsov', 'Monet']
print(artists[0]) # Malevich
print(artists[0:1]) # ['Malevich']