Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > Python
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.10.2023, 06:34   #1
Ципихович Эндрю
Старожил
 
Регистрация: 24.01.2011
Сообщений: 3,043
По умолчанию Pattern matching

здравствуйте читал про Pattern matching
С релизом python 3.10 появился pattern matching, собственно и являющийся главной особенностью этого релиза. Возможно кто-то уже встречал его упрощенную версию - switch-case - в других языках программирование, но pattern matching это другое, это намного круче
и так и не понял его работу))
если имеется:
Код:
mas = [1, 2, 3, 4, 5, 'r', 'u'] # где искать
find = [2, 12, 8, 'r'] # что искать
как бы вывело найденное, то есть 'r' и 8?
Ципихович Эндрю вне форума Ответить с цитированием
Старый 21.10.2023, 07:52   #2
Ципихович Эндрю
Старожил
 
Регистрация: 24.01.2011
Сообщений: 3,043
По умолчанию

то что можно найти путём:
Код:
mas = [1, 2, 3, 4, 5, 'r', 'u'] # где искать
find = [2, 12, 8, 'r'] # что искать
out = []
for item in find:
    if item in mas:
        out.append(item)
print('Найдено:', out)
это понятно, но где мощь
Цитата:
Сообщение от Ципихович Эндрю Посмотреть сообщение
pattern matching это другое, это намного круче
???
Ципихович Эндрю вне форума Ответить с цитированием
Старый 21.10.2023, 07:57   #3
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Причем тут поиск и матчинг? https://habr.com/en/companies/yandex...ticles/547902/
p51x вне форума Ответить с цитированием
Старый 21.10.2023, 19:34   #4
Ципихович Эндрю
Старожил
 
Регистрация: 24.01.2011
Сообщений: 3,043
По умолчанию

насколько мне известно in это самый быстрый поиск, мой код:
Код:
lst_replace_in_doc = []
for l in vFindText: 
    if l in doc_text:
        lst_replace_in_doc.append(l)
за время чуть менее часа, а точнее:
Начато 2023-10-21 14:23:40.368835
Окончено 2023-10-21 15:13:56.505702
в тексте doc_text, который равен тексту из 27073 абзацев
из возможных кандидатов на замену, из vFindText, он равен 903512
нашёл список из 31043 возможных кандидатов на замену, мне нужен более быстрый поиск,
на вход подаётся список и в моём случае текст-в представленном коде, но можно подать вместо текста список, на выходе нужен список из возможных кандидатов на замену

понятно что регулярки рулят, но как со списка в котором находится, всё что нужно найти сделать регулярку и в моём случае наверное их нужно будет много...
Ципихович Эндрю вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
pattern нужен шаблон для ввода имени JavaDoc Общие вопросы по Java, Java SE, Kotlin 0 23.02.2019 19:26
Встраивание Google RESTful pattern A в модель MVP Arvalon Java Мобильная разработка (Android) 0 28.05.2017 20:36
Pattern Composite shinauri PHP 2 20.07.2014 02:36
Pattern'ы, используемые классом Regex Mixim Общие вопросы .NET 2 01.11.2012 13:48