Списки в языке Python: разбор задач и примеров

Раздел: Python -> Учебные задачи

Основные задачи на списки

Как создать список чисел от 1 до N?

Наиболее эффективное решение использует функцию range и преобразование в список:

numbers = list(range(1, 101))
print(numbers[:10])  # первые 10 элементов

алгоритм решения задачи python (алгоритм решения задачи на python)

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

базовые задачи python (базовые задачи python)

Такой способ быстр и занимает минимум памяти, так как range возвращает итератор.

Как создать список чисел используя цикл?

Альтернативный вариант - цикл for с методом append:

numbers = []
for i in range(1, 101):
    numbers.append(i)
print(numbers[:5])

задачи для обучения python (задачи для обучения python)

[1, 2, 3, 4, 5]

задачи на классы в python (задачи на классы в python)

Типичная ошибка: попытка присвоить результат range напрямую списку без list() - будет объект range, а не список. Также при использовании цикла код становится длиннее и медленнее для больших N.

Как удалить дубликаты из списка?

Быстрый способ - преобразование во множества и обратно:

lst = [1, 2, 2, 3, 1, 4]
unique = list(set(lst))
print(unique)

множество python задачи (задачи на множества в python)

[1, 2, 3, 4]

задачи на модули python (задачи на модули в python)

Однако порядок элементов не сохраняется.

Как удалить дубликаты с сохранением порядка?

Используется цикл с проверкой в новом списке:

lst = [1, 2, 2, 3, 1, 4]
seen = []
for item in lst:
    if item not in seen:
        seen.append(item)
print(seen)

задачи на операторы в python (задачи на операторы в python)

[1, 2, 3, 4]

задачи на последовательности python (задачи на последовательности в python)

Проблема: при большом списке операция in линейна, общая сложность O(n^2). Для улучшения производительности можно использовать множество для проверки, сохраняя порядок: seen_set = set(); result = [].

Как отфильтровать список по условию (оставить только четные числа)?

Генератор списка (list comprehension) - лаконичное и быстрое решение:

numbers = [1, 2, 3, 4, 5, 6]
even = [x for x in numbers if x % 2 == 0]
print(even)

задачи на списки python (задачи на списки в python)

[2, 4, 6]

пробелы python задача (задача на пробелы в строке python)

Как отфильтровать список с помощью функции filter?

Функция filter принимает лямбда-функцию или обычную функцию:

numbers = [1, 2, 3, 4, 5, 6]
even = list(filter(lambda x: x % 2 == 0, numbers))
print(even)

задачи на if else python (задачи на условные операторы if-else в python)

[2, 4, 6]

задачи на работу с файлами python (задачи на работу с файлами в python)

Ошибка: забыть обернуть результат filter в list() - получится объект-итератор. Также лямбда-функция может быть менее читаемой.

Как отсортировать список строк по длине?

Параметр key в функции sorted или методе sort задаёт критерий:

words = ['кот', 'попугай', 'слон', 'ящерица']
sorted_words = sorted(words, key=len)
print(sorted_words)

задачи на функции в python (задачи на функции в python)

['кот', 'слон', 'попугай', 'ящерица']

задача на языке python код (задача по python с кодом)

Как отсортировать список с обратным порядком?

Добавляется параметр reverse=True:

words = ['кот', 'попугай', 'слон', 'ящерица']
sorted_words = sorted(words, key=len, reverse=True)
print(sorted_words)

логические задачи python (логические задачи на python)

['ящерица', 'попугай', 'слон', 'кот']

Python 3 произведение чисел (произведение чисел в python 3)

Внимание: sorted() возвращает новый список, а list.sort() изменяет исходный. Использовать тот или иной метод нужно в зависимости от необходимости сохранения исходного списка.

Как проверить, содержится ли элемент в списке?

Оператор in возвращает булево значение:

numbers = [1, 2, 3]
print(2 in numbers)
print(5 in numbers)

напиши условие задачи python (написание условия задачи на python)

True
False

объяснения python задача (объяснение задачи на python)

Как найти индекс первого вхождения элемента?

Метод index возвращает позицию:

numbers = [10, 20, 30, 20]
print(numbers.index(20))

прикладные задачи python (прикладные задачи на python)

1

решение задач по программированию python (решение задач по python)

Ошибка: если элемента нет, метод index вызывает исключение ValueError. Следует предварительно проверять наличие через in или использовать try/except.

Как создать двумерный список (матрицу)?

Генератор списков с вложенным генератором:

rows, cols = 3, 4
matrix = [[0 for _ in range(cols)] for _ in range(rows)]
print(matrix)

тест задачи python (тестовые задачи по python)

[[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]

задачи на python 8 класс (задачи по python для 8 класса)

Как создать матрицу с помощью умножения списка?

Неверный способ: [[0]*cols]*rows - создаёт ссылки на один и тот же внутренний список:

matrix = [[0]*4]*3
matrix[0][0] = 1
print(matrix)

программа python примеры задач (примеры задач по программированию на python)

[[1, 0, 0, 0], [1, 0, 0, 0], [1, 0, 0, 0]]

дана программа python s int (анализ программы с переменной s типа int в python)

Типичная ошибка: изменение одного элемента меняет все строки, так как каждая строка является одним и тем же объектом. Правильный способ - использовать вложенный генератор.

Как правильно скопировать список?

Поверхностная копия через срез или метод copy():

original = [1, 2, [3, 4]]
copy1 = original[:]
copy2 = original.copy()
print(copy1, copy2)

Python таблица умножения (таблица умножения в python)

[1, 2, [3, 4]] [1, 2, [3, 4]]

Чем отличается поверхностное копирование от глубокого?

При поверхностном копировании вложенные объекты остаются общими. Для полной независимости используется copy.deepcopy:

import copy
original = [1, 2, [3, 4]]
deep = copy.deepcopy(original)
original[2][0] = 999
print(original, deep)
[1, 2, [999, 4]] [1, 2, [3, 4]]
Ошибка: присваивание new = original не создаёт копию, а лишь ссылку на тот же список. Изменения отразятся в обеих переменных.

Как объединить два списка?

Оператор + создаёт новый список:

a = [1, 2]
b = [3, 4]
c = a + b
print(c)
[1, 2, 3, 4]

Как расширить один список элементами другого без создания нового?

Метод extend изменяет исходный список:

a = [1, 2]
b = [3, 4]
a.extend(b)
print(a)
[1, 2, 3, 4]
Ошибка: при использовании append в этом случае добавится список целиком как один элемент, а не его содержимое.

Как перевернуть список?

Срез с шагом -1 создаёт обратную копию:

lst = [1, 2, 3, 4]
rev = lst[::-1]
print(rev)
[4, 3, 2, 1]

Как развернуть список на месте?

Метод reverse() изменяет исходный список:

lst = [1, 2, 3, 4]
lst.reverse()
print(lst)
[4, 3, 2, 1]
Ошибка: вызов reversed(lst) возвращает итератор, а не список. Чтобы получить список, нужно обернуть в list().

Дополнительные примеры работы со списками

Транспонирование матрицы (список списков)

Используем zip с распаковкой:

Пример
matrix = [[1, 2, 3],
          [4, 5, 6]]
transposed = list(zip(*matrix))
print(transposed)
[(1, 4), (2, 5), (3, 6)]

Результат - список кортежей. Для получения списка списков добавляется генератор:

Пример
transposed = [list(row) for row in zip(*matrix)]
print(transposed)
[[1, 4], [2, 5], [3, 6]]

Частотный анализ элементов списка с использованием Counter

Из модуля collections:

Пример
from collections import Counter
words = ['apple', 'banana', 'apple', 'orange', 'banana', 'apple']
counter = Counter(words)
print(counter.most_common(2))
[('apple', 3), ('banana', 2)]

Развернуть плоский список из вложенного (flatten)

Вложенные списки разной глубины:

Пример
nested = [[1, 2], [3, [4, 5]], 6]
def flatten(lst):
    result = []
    for item in lst:
        if isinstance(item, list):
            result.extend(flatten(item))
        else:
            result.append(item)
    return result
print(flatten(nested))
[1, 2, 3, 4, 5, 6]

Применение нескольких функций к каждому элементу через map

Обработка строк: перевод в верхний регистр и длина одновременно:

Пример
items = ['кот', 'собака', 'хомяк']
processed = list(map(lambda x: (x.upper(), len(x)), items))
print(processed)
[('КОТ', 3), ('СОБАКА', 6), ('ХОМЯК', 5)]

Сортировка списка по двум критериям (сначала по длине, потом по алфавиту)

Функция sorted с кортежем в key:

Пример
words = ['cat', 'banana', 'apple', 'dog']
sorted_words = sorted(words, key=lambda x: (len(x), x))
print(sorted_words)
['cat', 'dog', 'apple', 'banana']

Объединение двух списков по индексам (как zip но с обработкой)

Создание списка пар с условием:

Пример
a = [1, 2, 3, 4]
b = [10, 20, 30, 40]
result = [x + y for x, y in zip(a, b) if x % 2 == 0]
print(result)
[22, 44]

Группировка элементов списка по остатку от деления

Использование словаря с пустыми списками:

Пример
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]
groups = {}
for n in numbers:
    key = n % 3
    groups.setdefault(key, []).append(n)
print(groups)
{1: [1, 4, 7], 2: [2, 5, 8], 0: [3, 6, 9]}

Проверка, являются ли все элементы списка уникальными

Сравнение длины списка с длиной множества:

Пример
def all_unique(lst):
    return len(lst) == len(set(lst))
print(all_unique([1, 2, 3]))
print(all_unique([1, 2, 2]))
True
False

Задачи на списки в Python - comments

En
задачи на списки python (python)