Занятие 6. Списки
поставить лайк
VIDEO
Списки в Python представляют собой упорядоченные изменяемые коллекции объектов произвольных
типов. Они являются одним из самых гибких и часто используемых типов данных в Python. Рассмотрим
подробно создание, использование и взаимодействие списков с различными типами данных.
Создание списков
Пустой список
empty_list = []
Список с элементами
numbers = [1 , 2 , 3 , 4 , 5 ]
strings = ["apple" , "banana" , "cherry" ]
mixed = [1 , "apple" , 3.14 , True ]
Обращение к элементам списка
fruits = ["apple" , "banana" , "cherry" ]
print(fruits[0 ])
print(fruits[1 ])
print(fruits[2 ]) print(fruits[-1 ])
print(fruits[-2 ])
print(fruits[-3 ])
Изменение элементов списка
fruits = ["apple" , "banana" , "cherry" ]
fruits[1 ] = "blueberry"
print(fruits)
Добавление элементов в список
Метод append()
Добавляет элемент в конец списка.
fruits = ["apple" , "banana" ]
fruits.append("cherry" )
print(fruits)
Метод insert()
Вставляет элемент на указанную позицию.
fruits = ["apple" , "banana" ]
fruits.insert(1 , "blueberry" )
print(fruits)
Метод extend()
Расширяет список, добавляя в конец все элементы из переданного итерируемого объекта (например,
другого списка).
fruits = ["apple" , "banana" ]
more_fruits = ["cherry" , "date" ]
fruits.extend(more_fruits)
print(fruits)
Удаление элементов из списка
Метод remove()
Удаляет первое вхождение указанного значения.
fruits = ["apple" , "banana" , "cherry" ]
fruits.remove("banana" )
print(fruits)
Метод pop()
Удаляет и возвращает элемент по указанному индексу. Если индекс не указан, удаляет и возвращает
последний элемент.
fruits = ["apple" , "banana" , "cherry" ]
popped_fruit = fruits.pop(1 )
print(popped_fruit)
print(fruits)
Метод clear()
Удаляет все элементы из списка.
fruits = ["apple" , "banana" , "cherry" ]
fruits.clear()
print(fruits)
Поиск элементов в списке
Метод index()
Возвращает индекс первого вхождения указанного значения. Вызывает исключение
ValueError
, если значение не найдено.
fruits = ["apple" , "banana" , "cherry" ]
index = fruits.index("banana" )
print(index)
Метод count()
Возвращает количество вхождений указанного значения.
numbers = [1 , 2 , 2 , 3 , 2 ]
count = numbers.count(2 )
print(count)
Сортировка списка
Метод sort()
Сортирует список на месте.
numbers = [3 , 1 , 4 , 1 , 5 , 9 , 2 ]
numbers.sort()
print(numbers)
Функция sorted()
Возвращает новый отсортированный список.
numbers = [3 , 1 , 4 , 1 , 5 , 9 , 2 ]
numbers.sort()
print(numbers)
Сортировка в обратном порядке
numbers = [3 , 1 , 4 , 1 , 5 , 9 , 2 ]
numbers.sort(reverse=True )
print(numbers)
Обращение списка
Метод reverse()
Изменяет порядок элементов в списке на обратный.
numbers = [3 , 1 , 4 , 1 , 5 , 9 , 2 ]
numbers.reverse()
print(numbers)
Функция reversed()
Возвращает новый объект, итерация по которому дает элементы списка в обратном порядке.
numbers = [3 , 1 , 4 , 1 , 5 , 9 , 2 ]
reversed_numbers = list(reversed(numbers))
print(reversed_numbers)
Копирование списков
Срез
original = [1 , 2 , 3 ]
copy = original[:]
print(copy)
Метод copy()
original = [1 , 2 , 3 ]
copy = original.copy()
print(copy)
Глубокое копирование
Для глубокого копирования вложенных списков используйте модуль copy
.
import copy
original = [[1 , 2 , 3 ], [4 , 5 , 6 ]]
deep_copy = copy.deepcopy(original)
print(deep_copy)
Таблица методов
Метод
Описание
Пример использования
append(x)
Добавляет элемент x
в конец списка
lst.append(3)
extend(iterable)
Расширяет список, добавляя все элементы из переданного
итерируемого объекта
lst.extend([4, 5])
insert(i, x)
Вставляет элемент x
на позицию i
lst.insert(1, 2)
remove(x)
Удаляет первый элемент из списка, значение которого равно
x
lst.remove(3)
pop([i])
Удаляет элемент на позиции i
и возвращает его.
Если индекс не указан, удаляет и возвращает последний элемент
lst.pop()
, lst.pop(1)
clear()
Удаляет все элементы из списка
lst.clear()
index(x[, start[, end]])
Возвращает индекс первого элемента, значение которого равно
x
. Необязательные аргументы start
и end
определяют область поиска
lst.index(3)
, lst.index(3, 2, 5)
count(x)
Возвращает количество элементов со значением x
lst.count(3)
sort(key=None, reverse=False)
Сортирует список на месте (аргументы могут быть
использованы для настройки сортировки)
lst.sort()
,
lst.sort(reverse=True)
, lst.sort(key=len)
reverse()
Разворачивает список на месте
lst.reverse()
copy()
Возвращает копию списка
lst_copy = lst.copy()
Списки и различные типы данных
Списки со строками
words = ["hello" , "world" ]
joined = " " .join(words)
print(joined)
split_words = joined.split()
print(split_words)
Списки с числами
numbers = [1 , 2 , 3 , 4 , 5 ]
squares = [x ** 2 for x in numbers]
print(squares)
Списки с логическими значениями
booleans = [True , False , True ]
all_true = all(booleans)
any_true = any(booleans)
print(all_true)
print(any_true)
Списки с другими списками (двумерные массивы)
matrix = [
[1 , 2 , 3 ],
[4 , 5 , 6 ],
[7 , 8 , 9 ]
]
for row in matrix:
for elem in row:
print(elem, end=' ' )
print()
Итерирование по спискам
Простое итерирование
fruits = ["apple" , "banana" , "cherry" ]
for fruit in fruits:
print(fruit)
Итерирование с доступом к индексам
fruits = ["apple" , "banana" , "cherry" ]
for index, fruit in enumerate(fruits):
print(f"Index {index}: {fruit}" )
Генераторы списков
Простые генераторы списков
squares = [x ** 2 for x in range(10 )]
print(squares)
Генераторы списков с условием
even_squares = [x ** 2 for x in range(10 ) if x % 2 == 0 ]
print(even_squares)
Функции и методы для работы со списками
Функция len()
Возвращает длину списка.
numbers = [1 , 2 , 3 , 4 , 5 ]
print(len(numbers))
Функция sum()
Возвращает сумму элементов списка.
numbers = [1 , 2 , 3 , 4 , 5 ]
print(sum(numbers))
Функция max() и min()
Возвращают соответственно максимальный и минимальный элемент списка.
numbers = [1 , 2 , 3 , 4 , 5 ]
print(max(numbers))
print(min(numbers))
Функция zip()
Функция zip()
объединяет несколько списков в один, возвращая итератор, который
производит кортежи элементов на каждой итерации.
names = ["Alice" , "Bob" , "Charlie" ]
ages = [25 , 30 , 35 ]
cities = ["New York" , "Los Angeles" , "Chicago" ]
for name, age, city in zip(names, ages, cities):
print(f"{name} is {age} years old and lives in {city}." )
Функция map()
Функция map()
применяет заданную функцию к каждому элементу списка.
numbers = [1 , 2 , 3 , 4 , 5 ]
squares = list(map(lambda x: x ** 2 , numbers))
print(squares)
Функция filter()
Функция filter()
создает новый список, содержащий только те элементы исходного
списка, для которых заданная функция возвращает True.
numbers = [1 , 2 , 3 , 4 , 5 ]
even_numbers = list(filter(lambda x: x % 2 == 0 , numbers))
print(even_numbers)
Функция reduce()
Функция reduce()
из модуля functools
применяет заданную функцию к
элементам списка, сводя его к единственному значению.
from functools import reduce
numbers = [1 , 2 , 3 , 4 , 5 ]
product = reduce(lambda x, y: x * y, numbers)
print(product)
Поворот списка
def rotate_list (lst, k) :
n = len(lst)
k = k % n
return lst[-k:] + lst[:-k]
numbers = [1 , 2 , 3 , 4 , 5 ]
rotated = rotate_list(numbers, 2 )
print(rotated)
def rotate_list (lst, k) :
n = len(lst)
k = k % n
rotated = [0 ] * n
for i in range(n):
rotated[(i + k) % n] = lst[i]
return rotated
numbers = [1 , 2 , 3 , 4 , 5 ]
rotated = rotate_list(numbers, 2 )
print(rotated)
Удаление дубликатов из списка
numbers = [1 , 2 , 2 , 3 , 4 , 4 , 5 ]
unique_numbers = list(set(numbers))
print(unique_numbers)
Разделение списка на части
numbers = [1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 ]
n = 3
chunks = [numbers[i:i + n] for i in range(0 , len(numbers), n)]
print(chunks)
Преобразование списка списков в один список
list_of_lists = [[1 , 2 , 3 ], [4 , 5 ], [6 , 7 , 8 , 9 ]]
flat_list = [item for sublist in list_of_lists for item in sublist]
print(flat_list)