Тренировочные упражнения на списки в языке Python
Задания на списки в Python
В этом разделе мы рассмотрим типичные задачи, возникающие при работе со списками в Python. Каждый блок содержит вопрос, на который отвечает код, а также разбор возможных проблем.
Как создать список и добавить в него элементы?
Наиболее эффективный способ – использовать метод append() для добавления одного элемента или extend() для добавления нескольких. Пример:
my_list = [1, 2, 3]
my_list.append(4) # [1, 2, 3, 4]
my_list.extend([5, 6]) # [1, 2, 3, 4, 5, 6]функция длина списка в python (длина списка в python)
Как создать список с помощью генератора?
Генератор списков (list comprehension) часто короче и быстрее:
squares = [x**2 for x in range(5)] # [0, 1, 4, 9, 16]Python списки добавление (добавление элемента в список python)
Типичная ошибка:
Забыть квадратные скобки – получится генератор, а не список.
Как вставить элемент в середину списка?
Метод insert() позволяет вставить по индексу:
lst = [1, 3, 4]
lst.insert(1, 2) # [1, 2, 3, 4]
метод добавления в список python (метод добавления элемента в список в python)
Индекс может быть отрицательным или больше длины – элемент добавится в конец.
Как удалить элемент из списка по значению?
Метод remove() удаляет первое вхождение. Если значения нет – возникает ValueError.
nums = [2, 5, 3, 5]
nums.remove(5) # [2, 3, 5]задания python списки (задания на списки в python)
Ошибка: удаление несуществующего элемента. Проверяйте if value in lst.
Как удалить элемент по индексу?
Используйте pop() или del:
lst = [10, 20, 30]
lst.pop(1) # возвращает 20, список [10, 30]
del lst[0] # удаляет первый элемент, список [30]изменить элементы списка python (изменение элементов списка в python)
Как получить срез списка?
Срез через [start:stop:step] – копия части списка. Например, все чётные индексы:
lst = [0, 1, 2, 3, 4, 5]
even_idx = lst[::2] # [0, 2, 4]Python list индекс элемента (индекс элемента в списке python)
Путаница с индексами: stop не включается.
Как скопировать список, чтобы не менять оригинал?
Поверхностная копия через copy() или срез [:]:
original = [1, [2, 3]]
shallow = original.copy()
shallow[1][0] = 99 # меняет и оригинал! Для глубокой копии нужен copy.deepcopyPython элементы списка в другой список (копирование элементов списка в другой список)
Как отсортировать список?
Метод sort() изменяет список на месте, sorted() возвращает новый:
lst = [3, 1, 2]
lst.sort()
print(lst) # [1, 2, 3]
new_lst = sorted([4, 2, 3], reverse=True) # [4, 3, 2]Python 3 append (метод append в python 3)
sort() не работает, если в списке разные типы (например, числа и строки).
Как отсортировать список словарей по ключу?
Параметр key:
users = [{'name': 'Zoe'}, {'name': 'Alice'}]
users.sort(key=lambda u: u['name'])
# [{'name': 'Alice'}, {'name': 'Zoe'}]поменять элементы местами python (обмен элементов местами)
Как найти индекс элемента?
index() возвращает первое вхождение, иначе ValueError:
items = ['a', 'b', 'c']
pos = items.index('b') # 1Python list object (объект списка в python)
Если элемент отсутствует – ошибка. Используйте проверку if element in items.
Как найти все индексы заданного значения?
С помощью list comprehension:
lst = [1, 2, 1, 3]
indices = [i for i, x in enumerate(lst) if x == 1] # [0, 2]списки python определение (определение списков в python)
Как объединить два списка?
Оператор + или extend():
a = [1, 2]
b = [3, 4]
c = a + b # [1, 2, 3, 4]
a.extend(b) # изменяет a: [1, 2, 3, 4]количество чисел python (количество чисел в python)
При многократном объединении в цикле + создаёт новые списки, что медленно. Лучше extend().
Как разделить список на равные части?
Используйте срез с шагом:
lst = [1,2,3,4,5,6]
n = 2
parts = [lst[i:i+n] for i in range(0, len(lst), n)]
# [[1,2], [3,4], [5,6]]найти список в списке python (поиск вложенного списка в списке python)
Как проверить наличие элемента в списке?
Оператор in:
if 3 in [1, 2, 3]:
print('есть')получить индекс python (получение индекса элемента в python)
Распространённая путаница: is проверяет идентичность, а не равенство. Используйте == или in.
Как подсчитать количество вхождений?
count():
[1, 2, 1, 3].count(1) # 2
Расширенные примеры работы со списками
Здесь собраны более сложные задания, которые помогут глубже понять возможности списков в Python.
Как развернуть список (reverse)?
Метод reverse() изменяет список на месте, а срез [::-1] создаёт копию.
a = [1, 2, 3]
a.reverse() # [3, 2, 1]
b = [4, 5, 6]
b[::-1] # [6, 5, 4], исходный b не меняется
Как удалить дубликаты из списка, сохранив порядок?
Используйте промежуточное множество для отслеживания уже встреченных элементов:
lst = [1, 2, 2, 3, 1]
seen = set()
new = []
for x in lst:
if x not in seen:
seen.add(x)
new.append(x)
print(new) # [1, 2, 3]
[1, 2, 3]
Если порядок не важен, можно просто list(set(lst)), но множество не сохраняет порядок.
Как преобразовать список чисел в строку через разделитель?
join() работает только со строками. Нужно преобразовать:
nums = [1, 2, 3]
s = ', '.join(map(str, nums))
print(s) # 1, 2, 3
1, 2, 3
Как найти сумму элементов списка (в том числе вложенных)?
Для плоского списка sum(lst). Для вложенных – рекурсия или itertools.chain:
flat = [1, 2, 3]
print(sum(flat)) # 6
nested = [[1, 2], [3, 4]]
import itertools
print(sum(itertools.chain.from_iterable(nested))) # 10
6 10
Как транспонировать матрицу (список списков)?
Используйте zip с распаковкой:
matrix = [[1, 2], [3, 4], [5, 6]]
transposed = list(zip(*matrix)) # [(1, 3, 5), (2, 4, 6)]
# Если нужны списки:
transposed = [list(row) for row in zip(*matrix)]
print(transposed)
[[1, 3, 5], [2, 4, 6]]
Как применить функцию к каждому элементу списка?
Генератор списков или map:
lst = ['1', '2', '3']
# Вариант 1
ints1 = [int(x) for x in lst]
# Вариант 2
ints2 = list(map(int, lst))
print(ints1, ints2) # [1, 2, 3] [1, 2, 3]
[1, 2, 3] [1, 2, 3]
Как отфильтровать список, оставив только числа больше 10?
Генератор списков с условием или filter:
nums = [15, 8, 20, 3]
filtered1 = [n for n in nums if n > 10]
filtered2 = list(filter(lambda n: n > 10, nums))
print(filtered1) # [15, 20]
[15, 20]
Как получить список уникальных элементов, сохранив порядок (ещё один способ)?
Используйте dict.fromkeys() (Python 3.7+ сохраняет порядок):
lst = [2, 1, 2, 3, 1]
unique = list(dict.fromkeys(lst))
print(unique) # [2, 1, 3]
[2, 1, 3]
Как объединить два списка в словарь (один – ключи, другой – значения)?
keys = ['a', 'b', 'c']
values = [1, 2, 3]
d = dict(zip(keys, values))
print(d) # {'a': 1, 'b': 2, 'c': 3}
{'a': 1, 'b': 2, 'c': 3}
Как поменять местами первый и последний элемент списка?
lst = [1, 2, 3, 4]
lst[0], lst[-1] = lst[-1], lst[0]
print(lst) # [4, 2, 3, 1]
[4, 2, 3, 1]
Как проверить, что список отсортирован?
def is_sorted(lst):
return all(lst[i] <= lst[i+1] for i in range(len(lst)-1))
print(is_sorted([1, 2, 3])) # True
print(is_sorted([1, 3, 2])) # False
True False
Ошибка при работе с большими списками:
Избегайте повторного копирования всего списка в цикле – используйте генераторы или срезы. Например, для сдвига элементов лучше применять collections.deque.