🐍 Укус питона 🐍
2.88K subscribers
778 photos
4 videos
279 links
🐍 Канал о программировании на языке Python. Тематические уроки и лайфхаки.

👽 Админ - @it_dashka
🔊 Купить рекламу: https://telega.in/c/byteofpython

👉 Чат: @abyteofpython
👉 Поделиться с друзьями: @byteofpython
Download Telegram
Можем ли мы использовать блок else для forцикла?
Anonymous Quiz
33%
Нет
67%
Да
Массивы в pattern matching.

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

В данном случае функция print_people принимает массив, который, как предполагается, состоит из трех элементов, рассмотрим их в следующей части.

🐍 Укус питона // 💬 Чат // #теория #pattern_matching #массивы
Что выведет этот код?
Anonymous Quiz
28%
True True
64%
True False
7%
False True
1%
False False
Массивы в pattern matching. Продолжение.

Первый шаблон предполагает, что элементы массива имеют определенные значения, смотрим первую часть примера:

В данном случае первый элемент массива должен представлять строку "Tom", второй - строку "Sam" и третий - строку "Bob".

Второй шаблон предполагает, что первый элемент массива должен быть равне строке "Tom", остальные два элемента могут иметь произвольные значения, вторая часть примера:

При этом значение второго элемента передается в переменную second, а значение третьего элемента не важно, поэтому вместо него применяется прочерк.

Третий шаблон соответствует любому массиву из трех элементов. При этом его элементы передаются в переменные first, second и third, третья часть кода:

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

🐍 Укус питона // 💬 Чат // #теория #pattern_matching #массивы
Массивы неопределенной длины

Если необходимо сравнивать выражение с массивом неопределенной длины, то можно определить значения/переменные только для обязательных элементов массива, а на необязательные ссылаться с помощью символа * (звездочки), смотрим код:

В примере применяется параметр *other, который соответствует всем остальным элементам. То есть шаблон [first, *other] соответствует любому массиву, который имеет как минимум один элемент, и этот элемент будет помещаться в параметр first. Все остальные элементы помещаются в параметр other, который представляет массив значений.

Если нам параметр с символом * (other) не важен, но мы по прежнему хотим, чтобы шаблон соответствовал массиву с одним и большим количеством элементов, мы можем использовать подшаблон *_, вторая часть:

🐍 Укус питона // 💬 Чат // #теория #pattern_matching #массивы
erid: LjN8K5NSk

Привет!
Мы BAUM, российская IT-компания. Наша работа — создавать продвинутые системы хранения данных и прикладной искусственный интеллект.Недавно мы завели аккаунт, где будем делиться своим опытом, давать советы для успешной карьеры, публиковать вакансии и рассказывать об интересных событиях из нашей жизни.
Обещаем, что будет очень полезно и совсем не душно – подписывайся!

Реклама. ООО "СХД БАУМ". ИНН 9731024067.
Альтернативные значения

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

В данном случае первый шаблон соответствует массиву из трех элементов, где первый элемент равен или "Tom", или "Tomas", или "Tommy".

Также можно задать альтернативные значения для отдельных элементов, но и альтернативные массивы, вторая часть:

В данном случае первый шаблон будет соответствовать двум массивам: ["Tom", "Sam", "Bob"] и ["Tomas", "Sam", "Bob"]

🐍 Укус питона // 💬 Чат // #теория #pattern_matching #массивы
Словари в pattern matching

Pattern matching позволяет проверить наличие в словаре определнных ключей и значений, первый пример:

Здесь предполагается, что в функцию look передается словарь. Первый шаблон (внимание на второй пример) соответствует словарю, в котором есть два элемента со следующими ключами и значениями: "red": "красный" и "blue": "синий".

Второй шаблон ({"red": "красный"}) соответствует любому словарю, где есть элемент "red": "красный". Аналогично третий шаблон ({"blue": "синий"}) соответствует любому словарю, где есть элемент "blue": "синий"

Четвертый шаблон - case {} соответствует в принципе любому словарю.

Последний шаблон соответствует любому значению и применяется на случай, если в функцию передан не словарь.

🐍 Укус питона // 💬 Чат // #теория #pattern_matching #словари
Что выведет этот код?
Anonymous Quiz
4%
py
50%
yn
13%
pyn
32%
yna
Передача набора значений

С помощью вертикальной черты | можно определить альтернативные значения, смотрим код:

В данном случае шаблон {"red": "красный" | "алый" | "червонный"} соответствует словарю, в котором есть элемент с ключом "red" и значением "красный" или "алый" или "червонный".

🐍 Укус питона // 💬 Чат // #теория #pattern_matching