#python-3.x
Вопрос:
def match(text, pattern):
if not pattern: return not text
first_match = bool(text) and pattern[0] in {text[0], '.'}
return first_match and match(text[1:], pattern[1:])
Я новичок в python и не понимаю синтаксиса. Какова цель элементов в фигурных скобках и что означает «bool(текст) и шаблон[0] в {text[0], ‘.’}»
Комментарии:
1. Это указывает на набор элементов
Ответ №1:
В python фигурные скобки используются для создания словаря или набора.
my_set = {1, 2, 3}
my_dict = {'a': 1, 'b': 2, 'c': 3}
bool(text) and pattern[0] in {text[0], '.'}
проверяет, является ли текст истинным (т. Е. не пустым или ложным), и первый элемент в шаблоне либо равен тексту[0], либо является».»
Ответ №2:
Если бы мы разрушили вашу функцию на отдельные части, это было бы легче понять
def match(text: str, pattern: str) -> bool:
# if pattern is an empty string or None
if not pattern:
# True if text is empty string or None, otherwise - false
result: bool = not text
return result
# If text is empty or None return False
if not text:
return False
# Equivalent to set(first letter of text, dot)
# We use set/{} instead of list/[] or tuple/() to remove duplicates,
# however i don't see why should we care about duplicated dots here
subset: set = {text[0], '.'}
# If first letter of pattern is not in subset, return False
if pattern[0] not in subset:
return False
# Go one level deeper in recursion and return it's answer
result: bool = match(text[1:], pattern[1:])
return result
О фигурных скобках. В python они означают две вещи:
- диктант / словарь:
{"foo": "bar", "count": 10}
- набор / уникальный список:
{1, 2, 3, 3}
создаст набор{1, 2, 3}
Перейдите по ссылкам, чтобы узнать больше из документов python