Несоответствие SyntaxError в Python?

Простое и довольно эффективное решение должно отсортировать оба набора и затем сравнить их для равенства:

bool equal = collection1.OrderBy(i => i).SequenceEqual(
                 collection2.OrderBy(i => i));

Этот алгоритм является O (N*logN), в то время как Вашим решением выше является O (N^2).

, Если наборы имеют определенные свойства, можно быть в состоянии реализовать более быстрое решение. Например, если оба из Ваших наборов являются наборами хеша, они не могут содержать дубликаты. Кроме того, проверка, содержит ли набор хеша некоторый элемент, очень быстра. В этом случае алгоритм, подобный Вашему, вероятно, был бы самым быстрым.

15
задан gorsky 6 December 2009 в 20:15
поделиться

2 ответа

В первом случае исключение вызывается компилятором, который запускает до , структура try / except существует даже (так как это сам компилятор настроит сразу после разбора). Во втором случае компилятор запускается дважды - и возникает исключение, когда компилятор запускается как часть eval , после первый запуск компилятора уже настроен try / except .

Итак, чтобы перехватить синтаксические ошибки, так или иначе, вы должны организовать, чтобы компилятор запускался дважды - eval односторонний, явный Встроенная функция compile вызывает другую, import очень удобен (после записи кода в другой файл), exec и execfile других возможностей пока нет. Но как бы вы это ни сделали, синтаксические ошибки могут быть обнаружены только после того, как компилятор запустит первый раз для настройки необходимых вам блоков try / except !

19
ответ дан 1 December 2019 в 03:34
поделиться

Краткий ответ: Нет.

Синтаксические ошибки возникают при анализе кода, что для нормального кода Python происходит до выполнения кода - код не выполняется внутри блока try / except поскольку код не выполняется, точка.

Однако, когда вы оцениваете или выполняете какой-либо код, вы анализируете его во время выполнения, чтобы вы могли поймать исключение.

2
ответ дан 1 December 2019 в 03:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: