Тренировочные упражнения на списки в языке Python

Раздел: Основы Python -> list

Задания на списки в 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.deepcopy

Python элементы списка в другой список (копирование элементов списка в другой список)

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

Метод 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')  # 1

Python 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 program list (программа для работы со списком python)
- новый список python (создание нового списка в python)
- создать массив чисел python (создание массива (списка) чисел в python)

Расширенные примеры работы со списками

Здесь собраны более сложные задания, которые помогут глубже понять возможности списков в 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.

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

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