@Zigreds

Для чего нужна функция «.union()» если можно сделать все намного короче и проще?

Вот прохожу я задание на яндекс практикуме, его содержание следующее:
Научите Анфису помогать вам с покупками в магазине. Вы хотите приготовить два блюда и рассказываете Анфисе, какие для них нужны продукты.
Напишите функцию print_shopping_list(), которая будет получать два списка продуктов —recipe1 и recipe2, и печатать на экран полный список покупок. Элементы в списке не должны повторяться.
Я пишу следующий код:
def print_shopping_list(a, b):
z=set(a+b)
print(', '.join(z))

pizza = ['мука', 'помидоры', 'шампиньоны', 'сыр', 'оливковое масло']
salad = ['огурцы', 'перцы', 'помидоры', 'оливковое масло', 'листья салата']

print_shopping_list(pizza, salad)

Выводит на экран следующее:
огурцы, помидоры, сыр, перцы, оливковое масло, мука, шампиньоны, листья салата

А мне говорят используй ".union()", я конечно нашел желаемое ими решение, оно следующее:
def print_shopping_list(a, b):
z = set(a).union(set(b).difference(a))
print(', '.join(z))

pizza = ['мука', 'помидоры', 'шампиньоны', 'сыр', 'оливковое масло']
salad = ['огурцы', 'перцы', 'помидоры', 'оливковое масло', 'листья салата']

print_shopping_list(pizza, salad)

Выводит на экран следующее:
помидоры, огурцы, мука, сыр, перцы, листья салата, оливковое масло, шампиньоны

Вот я и спрашиваю, зачем так усложнять код? Нет я конечно понимаю что пригодится все, тем не менее это ненужное усложнение кода, но все же зачем эта функция нужна?
  • Вопрос задан
  • 664 просмотра
Пригласить эксперта
Ответы на вопрос 1
trapwalker
@trapwalker Куратор тега Python
Программист, энтузиаст
Дело в том, что это учебное задание, а оно направлено на обучение вас использованию множеств. Эту конкретную задачу можно решать как угодно, но в вашем случае вы, возможно, не освоите операций со множествами.

Специфические операции со множествами имеют смысл когда речь идёт о производительности и читабельности.
Ваш способ так себе в этих смыслах, поскольку немножко хак.
Дело в том, что если списки окажутся похожими и огромными, то при их конкатенации вы задействуете лишнее количество памяти. union - правильное решение. Ваше - вполне возможное, но в учебных целях нужно освоить то, что предписывает учебный курс.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы