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