6. Списки.

Онлайн-тренажер Python 3 для начинающих

Теория без воды. Задачи с автоматической проверкой. Подсказки на русском языке. Работает в любом современном браузере.

начать бесплатно

Самоучитель Python 3, собранный из материалов данного сайта. Предназначен в основном для тех, кто хочет изучить язык программирования Python с нуля.

Списки в 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]) # apple print(fruits[1]) # banana print(fruits[2]) # cherry
# Обращение к элементам с конца
print(fruits[-1]) # cherry print(fruits[-2]) # banana print(fruits[-3]) # apple
 
Изменение элементов списка
fruits = ["apple", "banana", "cherry"]
fruits[1] = "blueberry"
print(fruits)  # ['apple', 'blueberry', 'cherry']
 
Добавление элементов в список
 
Метод append()
Добавляет элемент в конец списка.
fruits = ["apple", "banana"]
fruits.append("cherry")
print(fruits)  # ['apple', 'banana', 'cherry']
 
Метод insert()
Вставляет элемент на указанную позицию.
fruits = ["apple", "banana"]
fruits.insert(1, "blueberry")
print(fruits)  # ['apple', 'blueberry', 'banana']
 
Метод extend()
Расширяет список, добавляя в конец все элементы из переданного итерируемого объекта (например, другого списка).
fruits = ["apple", "banana"]
more_fruits = ["cherry", "date"]
fruits.extend(more_fruits)
print(fruits)  # ['apple', 'banana', 'cherry', 'date']
 
Удаление элементов из списка
 
Метод remove()
Удаляет первое вхождение указанного значения.
fruits = ["apple", "banana", "cherry"]
fruits.remove("banana")
print(fruits)  # ['apple', 'cherry']
 
Метод pop()
Удаляет и возвращает элемент по указанному индексу. Если индекс не указан, удаляет и возвращает последний элемент.
fruits = ["apple", "banana", "cherry"]
popped_fruit = fruits.pop(1)
print(popped_fruit)  # banana
print(fruits)  # ['apple', 'cherry']
 
Метод clear()
Удаляет все элементы из списка.
fruits = ["apple", "banana", "cherry"]
fruits.clear()
print(fruits)  # []
 
Поиск элементов в списке
 
Метод index()
Возвращает индекс первого вхождения указанного значения. Вызывает исключение ValueError, если значение не найдено.
fruits = ["apple", "banana", "cherry"]
index = fruits.index("banana")
print(index)  # 1
 
Метод count()
Возвращает количество вхождений указанного значения.
numbers = [1, 2, 2, 3, 2]
count = numbers.count(2)
print(count)  # 3
 
Сортировка списка
 
Метод sort()
Сортирует список на месте.
numbers = [3, 1, 4, 1, 5, 9, 2]
numbers.sort()
print(numbers)  # [1, 1, 2, 3, 4, 5, 9]
 
Функция sorted()
Возвращает новый отсортированный список.
numbers = [3, 1, 4, 1, 5, 9, 2]
numbers.sort()
print(numbers)  # [1, 1, 2, 3, 4, 5, 9]
 
Сортировка в обратном порядке
numbers = [3, 1, 4, 1, 5, 9, 2]
numbers.sort(reverse=True)
print(numbers)  # [9, 5, 4, 3, 2, 1, 1]
 
Обращение списка
 
Метод reverse()
Изменяет порядок элементов в списке на обратный.
numbers = [3, 1, 4, 1, 5, 9, 2]
numbers.reverse()
print(numbers)  # [2, 9, 5, 1, 4, 1, 3]
 
Функция reversed()
Возвращает новый объект, итерация по которому дает элементы списка в обратном порядке.
numbers = [3, 1, 4, 1, 5, 9, 2]
reversed_numbers = list(reversed(numbers))
print(reversed_numbers)  # [2, 9, 5, 1, 4, 1, 3]
 
Копирование списков
 
Срез
original = [1, 2, 3]
copy = original[:]
print(copy)  # [1, 2, 3]
 
Метод copy()
original = [1, 2, 3]
copy = original.copy()
print(copy)  # [1, 2, 3]
 
Глубокое копирование
Для глубокого копирования вложенных списков используйте модуль copy.
import copy

original = [[1, 2, 3], [4, 5, 6]]
deep_copy = copy.deepcopy(original)
print(deep_copy)  # [[1, 2, 3], [4, 5, 6]]
 
Таблица методов
 
Метод Описание Пример использования
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)  # "hello world"

split_words = joined.split()
print(split_words)  # ['hello', 'world']
 
Списки с числами
numbers = [1, 2, 3, 4, 5]
squares = [x ** 2 for x in numbers]
print(squares)  # [1, 4, 9, 16, 25]
 
Списки с логическими значениями
booleans = [True, False, True]
all_true = all(booleans)
any_true = any(booleans)
print(all_true)  # False
print(any_true)  # 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)  # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
 
Генераторы списков с условием
even_squares = [x ** 2 for x in range(10) if x % 2 == 0]
print(even_squares)  # [0, 4, 16, 36, 64]
 
Функции и методы для работы со списками
 
Функция len()
Возвращает длину списка.
numbers = [1, 2, 3, 4, 5]
print(len(numbers))  # 5
 
Функция sum()
Возвращает сумму элементов списка.
numbers = [1, 2, 3, 4, 5]
print(sum(numbers))  # 15
 
Функция max() и min()
Возвращают соответственно максимальный и минимальный элемент списка.
numbers = [1, 2, 3, 4, 5]
print(max(numbers))  # 5
print(min(numbers))  # 1
 
Функция 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)  # [1, 4, 9, 16, 25]
 
Функция filter()
Функция filter() создает новый список, содержащий только те элементы исходного списка, для которых заданная функция возвращает True.
numbers = [1, 2, 3, 4, 5]
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
print(even_numbers)  # [2, 4]
 
Функция reduce()
Функция reduce() из модуля functools применяет заданную функцию к элементам списка, сводя его к единственному значению.
from functools import reduce

numbers = [1, 2, 3, 4, 5]
product = reduce(lambda x, y: x * y, numbers)
print(product)  # 120
 
Поворот списка
def rotate_list(lst, k):
    n = len(lst)
    k = k % n  # Для обработки случаев, когда k больше длины списка
    return lst[-k:] + lst[:-k]

numbers = [1, 2, 3, 4, 5]
rotated = rotate_list(numbers, 2)
print(rotated)  # Вывод: [4, 5, 1, 2, 3]
def rotate_list(lst, k):
    n = len(lst)
    k = k % n  # Для обработки случаев, когда k больше длины списка
    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)  # Вывод: [4, 5, 1, 2, 3]
 
Удаление дубликатов из списка
numbers = [1, 2, 2, 3, 4, 4, 5]
unique_numbers = list(set(numbers))
print(unique_numbers)  # [1, 2, 3, 4, 5]
 
Разделение списка на части
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)  # [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
 
Преобразование списка списков в один список
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)  # [1, 2, 3, 4, 5, 6, 7, 8, 9]

категории

ТЕОРИЯ

  • Введение в Python
  • Основы программирования на Python
  • Управляющие конструкции
  • Структуры данных
  • Функции и модули
  • Обработка исключений
  • Работа с файлами и потоками
  • файловая система
  • Объектно-ориентированное программирование (ООП)
  • Регулярные выражения
  • Дополнительные темы

Мы в соцсетях