Он определяет не совпадающие элементы в списках
l3 = [50, 75, 30, 20, 40, 69]
l1 = [10, 20, 30, 40, 50]
res = [x for x in l1 + l3 if x not in l1 or x not in l3]
print(res)
Python
Является ли грамотным такой код python?
Приведенный код не является хорошим способом обнаружения несоответствующих элементов в двух списках. Причина в том, что строка res = [x для x в l1 + l3, если x не в l1 или x не в l3] проверяет, нет ли элемента в l1 или не в l3, что означает, что она добавит все элементы, которых нет ни в одном из списков, даже если они присутствуют в обоих списках.
Лучшим способом выполнить эту задачу было бы использовать set data type и set method difference().
Приведенный выше код более удобочитаем, эффективен и даст правильный вывод для задачи обнаружения несоответствующих элементов в списках.
Важно отметить, что метод difference() возвращает набор, поэтому вам нужно преобразовать его обратно в список, если вы хотите его распечатать.
Также стоит отметить, что это решение сохраняет порядок списков, не гарантируется, что порядок элементов в списках будет сохранен, если вы хотите сохранить порядок, вам следует рассмотреть возможность использования других структур данных, таких как deque из коллекций.
Лучшим способом выполнить эту задачу было бы использовать set data type и set method difference().
l1 = [10, 20, 30, 40, 50]
l2 = [50, 75, 30, 20, 40, 69]
result = list(set(l1).difference(l2)) + list(set(l2).difference(l1))
print(result)
Это создаст набор из l1 и l2, а затем использует метод difference() для получения несоответствующих элементов. Результатом будут элементы, уникальные для l1 и уникальные для l2. Приведенный выше код более удобочитаем, эффективен и даст правильный вывод для задачи обнаружения несоответствующих элементов в списках.
Важно отметить, что метод difference() возвращает набор, поэтому вам нужно преобразовать его обратно в список, если вы хотите его распечатать.
Также стоит отметить, что это решение сохраняет порядок списков, не гарантируется, что порядок элементов в списках будет сохранен, если вы хотите сохранить порядок, вам следует рассмотреть возможность использования других структур данных, таких как deque из коллекций.
"Грамотность" - это синтаксис.
Если твой код запускается, значит, он "грамотный". Все остальное с этой точки зрения абсолютно вторично.
Что касается алгоритма, то лично я бы просто вычел из объединения множеств их пересечение, а не страдал с этими циклами. "Зачем программистам математика" в действии.
Если твой код запускается, значит, он "грамотный". Все остальное с этой точки зрения абсолютно вторично.
Что касается алгоритма, то лично я бы просто вычел из объединения множеств их пересечение, а не страдал с этими циклами. "Зачем программистам математика" в действии.
В Питоне больше принято такие штуки делать например так
res = list(set(l3) ^ set(l1))
res = list(set(l3) ^ set(l1))
Похожие вопросы
- Где ошибка в коде? (Python)
- Переделайте код python
- Помогите исправить ошибку в коде. Python
- Как ускорить код Python?
- Ошибка в коде python discord.py
- Объясните этот адский код. python
- Объясните код python пожалуйста
- Задача 10. Игра «Компьютер угадывает число» язык кода Python помогите пожалуйста
- Помогите пожалуйста с кодом. Python
- Не работает код Python