Как подходить к практикуму
Сначала определите тип операции: поиск одного элемента, построение нового списка, изменение исходного списка, группировка или обход вложенной структуры.
Для учебных задач лучше написать ясный цикл, а затем при необходимости заменить его на более компактную конструкцию.
products = ["Bread", "Butter", "Cheese", "Milk", "Eggs"]
if "Milk" in products:
print(products.index("Milk") + 1)
else:
print("Товар Milk отсутствует")Списки уникальных значений
Источник просит получить уникальные слова в алфавитном порядке без учёта регистра. Для этого слова приводятся к lower(), очищаются от точки, затем передаются в set().
Если порядок появления важен, одного set() недостаточно, потому что множество не сохраняет учебно ожидаемый порядок.
text = "Python is a great programming language. Python is popular and powerful."
words = [word.strip(".").lower() for word in text.split()]
unique_words = sorted(set(words))
print("Количество уникальных слов:", len(unique_words))
print("Уникальные слова:", unique_words)Изменяемое внутри неизменяемого
Кортеж нельзя заменить по индексу, но если внутри кортежа лежит список, сам список можно менять.
Это важно в задачах про сотрудников и проекты: кортеж хранит имя и список задач, а список задач остаётся изменяемым объектом.
employees = [
("Alice", ["Review documents", "Call clients"]),
("Bob", ["Check emails"]),
]
for name, tasks in employees:
if name == "Alice":
tasks.append("Prepare presentation")
print(tasks)Подпоследовательность
Проверка последовательности цифр означает: все введённые символы должны встретиться в исходном списке в том же порядке, но не обязательно подряд.
Удобная стратегия — держать индекс следующего ожидаемого символа и продвигать его при совпадении.
my_list = ["3", "6", "3", "2", "9", "3", "9", "4", "3", "9", "0"]
sequence = "943"
position = 0
for digit in my_list:
if position < len(sequence) and digit == sequence[position]:
position += 1
print(position == len(sequence))