Основы работы со списками

Слайд 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']