Списки в языке 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