Массивы в pattern matching.
В качестве шаблонов также могут выступать массивы. Подобным шаблоны также могут содержать либо конкретные значения, либо переменные, которые передаются элементы массивов, либо символ прочерка _, если элемент массива не важен.
В данном случае функция print_people принимает массив, который, как предполагается, состоит из трех элементов, рассмотрим их в следующей части.
🐍 Укус питона // 💬 Чат // #теория #pattern_matching #массивы
В качестве шаблонов также могут выступать массивы. Подобным шаблоны также могут содержать либо конкретные значения, либо переменные, которые передаются элементы массивов, либо символ прочерка _, если элемент массива не важен.
В данном случае функция print_people принимает массив, который, как предполагается, состоит из трех элементов, рассмотрим их в следующей части.
🐍 Укус питона // 💬 Чат // #теория #pattern_matching #массивы
Массивы в pattern matching. Продолжение.
Первый шаблон предполагает, что элементы массива имеют определенные значения, смотрим первую часть примера:
В данном случае первый элемент массива должен представлять строку "Tom", второй - строку "Sam" и третий - строку "Bob".
Второй шаблон предполагает, что первый элемент массива должен быть равне строке "Tom", остальные два элемента могут иметь произвольные значения, вторая часть примера:
При этом значение второго элемента передается в переменную second, а значение третьего элемента не важно, поэтому вместо него применяется прочерк.
Третий шаблон соответствует любому массиву из трех элементов. При этом его элементы передаются в переменные first, second и third, третья часть кода:
В данном случае для соответствия любому из шаблонов массив должен был иметь три элемента. Но также можно определять шаблоны для массивов разной длины, последняя часть примера:
🐍 Укус питона // 💬 Чат // #теория #pattern_matching #массивы
Первый шаблон предполагает, что элементы массива имеют определенные значения, смотрим первую часть примера:
В данном случае первый элемент массива должен представлять строку "Tom", второй - строку "Sam" и третий - строку "Bob".
Второй шаблон предполагает, что первый элемент массива должен быть равне строке "Tom", остальные два элемента могут иметь произвольные значения, вторая часть примера:
При этом значение второго элемента передается в переменную second, а значение третьего элемента не важно, поэтому вместо него применяется прочерк.
Третий шаблон соответствует любому массиву из трех элементов. При этом его элементы передаются в переменные first, second и third, третья часть кода:
В данном случае для соответствия любому из шаблонов массив должен был иметь три элемента. Но также можно определять шаблоны для массивов разной длины, последняя часть примера:
🐍 Укус питона // 💬 Чат // #теория #pattern_matching #массивы
Массивы неопределенной длины
Если необходимо сравнивать выражение с массивом неопределенной длины, то можно определить значения/переменные только для обязательных элементов массива, а на необязательные ссылаться с помощью символа * (звездочки), смотрим код:
В примере применяется параметр *other, который соответствует всем остальным элементам. То есть шаблон [first, *other] соответствует любому массиву, который имеет как минимум один элемент, и этот элемент будет помещаться в параметр first. Все остальные элементы помещаются в параметр other, который представляет массив значений.
Если нам параметр с символом * (other) не важен, но мы по прежнему хотим, чтобы шаблон соответствовал массиву с одним и большим количеством элементов, мы можем использовать подшаблон *_, вторая часть:
🐍 Укус питона // 💬 Чат // #теория #pattern_matching #массивы
Если необходимо сравнивать выражение с массивом неопределенной длины, то можно определить значения/переменные только для обязательных элементов массива, а на необязательные ссылаться с помощью символа * (звездочки), смотрим код:
В примере применяется параметр *other, который соответствует всем остальным элементам. То есть шаблон [first, *other] соответствует любому массиву, который имеет как минимум один элемент, и этот элемент будет помещаться в параметр first. Все остальные элементы помещаются в параметр other, который представляет массив значений.
Если нам параметр с символом * (other) не важен, но мы по прежнему хотим, чтобы шаблон соответствовал массиву с одним и большим количеством элементов, мы можем использовать подшаблон *_, вторая часть:
🐍 Укус питона // 💬 Чат // #теория #pattern_matching #массивы
erid: LjN8K5NSk
Привет!
Мы BAUM, российская IT-компания. Наша работа — создавать продвинутые системы хранения данных и прикладной искусственный интеллект.Недавно мы завели аккаунт, где будем делиться своим опытом, давать советы для успешной карьеры, публиковать вакансии и рассказывать об интересных событиях из нашей жизни.
Обещаем, что будет очень полезно и совсем не душно – подписывайся!
Реклама. ООО "СХД БАУМ". ИНН 9731024067.
Привет!
Мы BAUM, российская IT-компания. Наша работа — создавать продвинутые системы хранения данных и прикладной искусственный интеллект.Недавно мы завели аккаунт, где будем делиться своим опытом, давать советы для успешной карьеры, публиковать вакансии и рассказывать об интересных событиях из нашей жизни.
Обещаем, что будет очень полезно и совсем не душно – подписывайся!
Реклама. ООО "СХД БАУМ". ИНН 9731024067.
Что выведет этот код?
Anonymous Quiz
72%
KeyError
15%
{0: 1, 7: 0, 1: 1, 8: 0}
6%
{0: 0, 7: 0, 1: 1, 8: 1}
7%
{1: 1, 7: 2, 0: 1, 8: 1}
Альтернативные значения
Если необходимо, чтобы элемент массива соответствовал набору значений, то эти значения можно перечислить через вертикальную черту, смотрим первую часть кода:
В данном случае первый шаблон соответствует массиву из трех элементов, где первый элемент равен или "Tom", или "Tomas", или "Tommy".
Также можно задать альтернативные значения для отдельных элементов, но и альтернативные массивы, вторая часть:
В данном случае первый шаблон будет соответствовать двум массивам: ["Tom", "Sam", "Bob"] и ["Tomas", "Sam", "Bob"]
🐍 Укус питона // 💬 Чат // #теория #pattern_matching #массивы
Если необходимо, чтобы элемент массива соответствовал набору значений, то эти значения можно перечислить через вертикальную черту, смотрим первую часть кода:
В данном случае первый шаблон соответствует массиву из трех элементов, где первый элемент равен или "Tom", или "Tomas", или "Tommy".
Также можно задать альтернативные значения для отдельных элементов, но и альтернативные массивы, вторая часть:
В данном случае первый шаблон будет соответствовать двум массивам: ["Tom", "Sam", "Bob"] и ["Tomas", "Sam", "Bob"]
🐍 Укус питона // 💬 Чат // #теория #pattern_matching #массивы
Что выведет этот код?
Anonymous Quiz
80%
Salary: 12000 Salary: 8000
13%
Salary: 8000 Salary: 12000
8%
Программа завершилась с ошибками
Словари в pattern matching
Pattern matching позволяет проверить наличие в словаре определнных ключей и значений, первый пример:
Здесь предполагается, что в функцию look передается словарь. Первый шаблон (внимание на второй пример) соответствует словарю, в котором есть два элемента со следующими ключами и значениями: "red": "красный" и "blue": "синий".
Второй шаблон ({"red": "красный"}) соответствует любому словарю, где есть элемент "red": "красный". Аналогично третий шаблон ({"blue": "синий"}) соответствует любому словарю, где есть элемент "blue": "синий"
Четвертый шаблон - case {} соответствует в принципе любому словарю.
Последний шаблон соответствует любому значению и применяется на случай, если в функцию передан не словарь.
🐍 Укус питона // 💬 Чат // #теория #pattern_matching #словари
Pattern matching позволяет проверить наличие в словаре определнных ключей и значений, первый пример:
Здесь предполагается, что в функцию look передается словарь. Первый шаблон (внимание на второй пример) соответствует словарю, в котором есть два элемента со следующими ключами и значениями: "red": "красный" и "blue": "синий".
Второй шаблон ({"red": "красный"}) соответствует любому словарю, где есть элемент "red": "красный". Аналогично третий шаблон ({"blue": "синий"}) соответствует любому словарю, где есть элемент "blue": "синий"
Четвертый шаблон - case {} соответствует в принципе любому словарю.
Последний шаблон соответствует любому значению и применяется на случай, если в функцию передан не словарь.
🐍 Укус питона // 💬 Чат // #теория #pattern_matching #словари
Передача набора значений
С помощью вертикальной черты | можно определить альтернативные значения, смотрим код:
В данном случае шаблон {"red": "красный" | "алый" | "червонный"} соответствует словарю, в котором есть элемент с ключом "red" и значением "красный" или "алый" или "червонный".
🐍 Укус питона // 💬 Чат // #теория #pattern_matching
С помощью вертикальной черты | можно определить альтернативные значения, смотрим код:
В данном случае шаблон {"red": "красный" | "алый" | "червонный"} соответствует словарю, в котором есть элемент с ключом "red" и значением "красный" или "алый" или "червонный".
🐍 Укус питона // 💬 Чат // #теория #pattern_matching
Что выведет этот код?
Anonymous Quiz
13%
{‘Vicki’, ‘Jodi’, ‘Garry’, ‘Eric’}
41%
{‘Jodi’, ‘Vicki’, ‘Garry’, ‘Eric’}
47%
Программа выполнена с ошибкой