Найти - Пользователи
Полная версия: Проверка строкового параметра
Начало » Python для новичков » Проверка строкового параметра
1 2
ZAN
PyCraft
ИМХО, регулярка и только регулярка т.к. намного быстрее и намного нагляднее и понятнее
Регулярка не быстрее, одна только компилляция займет больше времени, чем проверка посимвольно. К тому же питоновский движок регулярки - на НКА, а это значит, что оператор “|” еще сильнее увеличит суммарное время выполнения (хотя не думаю, что производительность в данной задаче играет какую-то роль :) ). И последнее, вариант, предолженный PyCraft (да и вообще, любой вариант, использующий запоминающие либо именные скобки), будет работать для строк, длиной не более ста символов - из-за ограничения на количество запоминающих скобок - не более ста в одном регулярном выражении, это легко проверить, если заглянуть в исходники. Если регулярка будет генерироваться динамически, то такая ситуация вполне жизненная.
ZAN
ice
И ведь забыл я совсем про енумирейт
Кстати, вместо нее можно воспользоваться функцией zip:
def check(validityList, myString):
zippedList = zip(myString, validityList)
if len(zippedList) < 2:
warnings.warn(“string's length less then 2”)
for char, allowable in zippedList:
if char not in allowable:
warnings.warn('character “%s” is not allowable in “%s”' %(char, allowable))
PyCraft
ZAN
Регулярка не быстрее, одна только компилляция займет больше времени, чем проверка посимвольно.
Кому надо, тот проверит фактическую производительность на больших циклах.

В задаче ничего не сказано, про динамически изменяемые списки, поэтому принимаем их постоянными, хотя ничто не мешает их менять и перекомпилировать. Компиляция выполняется один раз вначале, а применение многократно в цикле. Последовательность $| можно поменять на |$, для исследования производительности. Максимальное количество скобок явно задано в задаче - от 2 до 6

ZAN
Сложность, фактически, скорее не в реализации, а в задании конфигурации для валидной строки.
Неужели моя регулярка сложна для восприятия?
ZAN
PyCraft
Неужели моя регулярка сложна для восприятия?
:)

PyCraft
только регулярка т.к. намного быстрее
В данной задаче регулярка может работать в лучшем случае почти так же, как и перебором (при небольшом количестве альтернатив “|” и массивных сетах "")
Лично я, решая подобного рода задачу, скорее всего также выбрал бы регулярку, но, скорее, из-за привычки, а не потому, что это:
PyCraft
намного быстрее и намного нагляднее и понятнее
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB