Обращение к элементам кортежа
Обращение к элементам в кортеже происходит также, как и в списке, по индексу. Индексация начинается также с нуля при получении элементов с начала списка и с -1 при получении элементов с конца списка, первая часть кода:
Но так как кортеж - неизменяемый тип (immutable), то мы не сможем изменить его элементы. То есть следующая запись работать не будет, маленькая вторая часть:
При необходимости мы можем разложить кортеж на отдельные переменные, третья часть:
🐍 Укус питона // 💬 Чат // #теория #кортежи
Обращение к элементам в кортеже происходит также, как и в списке, по индексу. Индексация начинается также с нуля при получении элементов с начала списка и с -1 при получении элементов с конца списка, первая часть кода:
Но так как кортеж - неизменяемый тип (immutable), то мы не сможем изменить его элементы. То есть следующая запись работать не будет, маленькая вторая часть:
При необходимости мы можем разложить кортеж на отдельные переменные, третья часть:
🐍 Укус питона // 💬 Чат // #теория #кортежи
Кортеж как параметр и результат функций
Особенно удобно использовать кортежи, когда необходимо возвратить из функции сразу несколько значений. Когда функция возвращает несколько значений, фактически она возвращает в кортеж, первая часть:
При передаче кортежа в функцию с помощью оператора * его можно разложить на отдельные значения, которые передаются параметрам функции, вторая часть кода:
🐍 Укус питона // 💬 Чат // #теория #кортежи #функции
Особенно удобно использовать кортежи, когда необходимо возвратить из функции сразу несколько значений. Когда функция возвращает несколько значений, фактически она возвращает в кортеж, первая часть:
При передаче кортежа в функцию с помощью оператора * его можно разложить на отдельные значения, которые передаются параметрам функции, вторая часть кода:
🐍 Укус питона // 💬 Чат // #теория #кортежи #функции
Кортежи в pattern matching.
В качестве шаблонов в pathern matching в Python могут выступать кортежи. Например:
В данном случае функция принимает параметр user, который, как предполагается, представляет кортеж из двух элементов. И конструкция match сравнивает этот кортеж с рядом шаблонов. Первый шаблон предполагает, что кортеж user точно соответствует набору значений, вторая маленькая часть кода:
То есть, если первый элемент кортежа равен "Tom", а второй - 37, то на консоль выводится строка "default user"
🐍 Укус питона // 💬 Чат // #теория #pattern_matching #кортежи
В качестве шаблонов в pathern matching в Python могут выступать кортежи. Например:
В данном случае функция принимает параметр user, который, как предполагается, представляет кортеж из двух элементов. И конструкция match сравнивает этот кортеж с рядом шаблонов. Первый шаблон предполагает, что кортеж user точно соответствует набору значений, вторая маленькая часть кода:
То есть, если первый элемент кортежа равен "Tom", а второй - 37, то на консоль выводится строка "default user"
🐍 Укус питона // 💬 Чат // #теория #pattern_matching #кортежи
Кортежи в pattern matching. Продолжение.
Второй шаблон соответствует любому двухэлементному кортежу, первый элемент которого равен строке "Tom":
Для второго элемента определяется переменная age. В итоге, если первый элемент кортежа равен строке "Tom", а второй не равен 37, то такой кортеж будет соответствовать второму шаблону. Причем второй элемент будет передаваться переменной age.
🐍 Укус питона // 💬 Чат // #теория #pattern_matching #кортежи
Второй шаблон соответствует любому двухэлементному кортежу, первый элемент которого равен строке "Tom":
Для второго элемента определяется переменная age. В итоге, если первый элемент кортежа равен строке "Tom", а второй не равен 37, то такой кортеж будет соответствовать второму шаблону. Причем второй элемент будет передаваться переменной age.
🐍 Укус питона // 💬 Чат // #теория #pattern_matching #кортежи
Кортежи в pattern matching. Продолжение.
Третий шаблон во многом аналогичен, только теперь строго определен второй элемент кортежа - он должен быть равен 22, а первый попадает в переменную name:
Если двухэлементный кортеж не соответствует первому, второму и третьему шаблонам, то он будет соответствовать четвертому шаблону, в которому нам не важные конкретные значения - для них определены переменные name и age:
🐍 Укус питона // 💬 Чат // #теория #pattern_matching #кортежи
Третий шаблон во многом аналогичен, только теперь строго определен второй элемент кортежа - он должен быть равен 22, а первый попадает в переменную name:
Если двухэлементный кортеж не соответствует первому, второму и третьему шаблонам, то он будет соответствовать четвертому шаблону, в которому нам не важные конкретные значения - для них определены переменные name и age:
🐍 Укус питона // 💬 Чат // #теория #pattern_matching #кортежи
Альтернативные значения.
Если необходимо, чтобы элемент кортежа соответствовал набору значений, то эти значения можно перечислить через вертикальную черту:
В данном случае первый шаблон соответствует двухэлементному кортежу, где первый элемент равен или "Tom", или "Tomas", или "Tommy".
🐍 Укус питона // 💬 Чат // #теория #pattern_matching #кортежи
Если необходимо, чтобы элемент кортежа соответствовал набору значений, то эти значения можно перечислить через вертикальную черту:
В данном случае первый шаблон соответствует двухэлементному кортежу, где первый элемент равен или "Tom", или "Tomas", или "Tommy".
🐍 Укус питона // 💬 Чат // #теория #pattern_matching #кортежи
Альтернативные значения. Продолжение.
Также можно задать альтернативные значения для отдельных элементов, но и альтернативные кортежи:
В данном случае первый шаблон будет соответствовать двум кортежам: ("Tom", 37) и ("Sam", 22).
🐍 Укус питона // 💬 Чат // #теория #pattern_matching #кортежи
Также можно задать альтернативные значения для отдельных элементов, но и альтернативные кортежи:
В данном случае первый шаблон будет соответствовать двум кортежам: ("Tom", 37) и ("Sam", 22).
🐍 Укус питона // 💬 Чат // #теория #pattern_matching #кортежи
Пропуск элементов.
Если нам не важен какой-то элемент кортежа, то в шаблоне вместо конкретного значния или переменной можно указать шаблон _:
🐍 Укус питона // 💬 Чат // #теория #pattern_matching #кортежи
Если нам не важен какой-то элемент кортежа, то в шаблоне вместо конкретного значния или переменной можно указать шаблон _:
🐍 Укус питона // 💬 Чат // #теория #pattern_matching #кортежи
Пропуск элементов. Продолжение.
Можно использовать прочерки для всех элементов кортежа, в этом случае значения всех этих элементов будут не важны:
В причем в последнем случае шаблон (_, _) по прежнему соответствует только двухэлементному кортежу
🐍 Укус питона // 💬 Чат // #теория #pattern_matching #кортежи
Можно использовать прочерки для всех элементов кортежа, в этом случае значения всех этих элементов будут не важны:
В причем в последнем случае шаблон (_, _) по прежнему соответствует только двухэлементному кортежу
🐍 Укус питона // 💬 Чат // #теория #pattern_matching #кортежи
Пропуск элементов. Продолжение.
В примере выше применяемые шаблоны соответствовали только двухэлементному кортежу. Однако также можно использовать одновременно шаблоны кортежей с разным количеством элементов:
🐍 Укус питона // 💬 Чат // #теория #pattern_matching #кортежи
В примере выше применяемые шаблоны соответствовали только двухэлементному кортежу. Однако также можно использовать одновременно шаблоны кортежей с разным количеством элементов:
🐍 Укус питона // 💬 Чат // #теория #pattern_matching #кортежи
Кортеж с неопределенным количеством элементов.
Если необходимо сравнивать выражение с кортежем неопределенной длины, то можно определять все остальные значения кортежа с помощью символа * (звездочки):
В примере выше применяется параметр *rest, который соответствует всем остальным элементам. То есть в примере выше шаблоны ("Tom", 37, *rest) и (name, age, *rest) соответствуют любому кортежу с двумя элементами и больше. Все элементы начиная с третьего будут помещаться в параметр rest, который представляет массив значений.
🐍 Укус питона // 💬 Чат // #теория #pattern_matching #кортежи
Если необходимо сравнивать выражение с кортежем неопределенной длины, то можно определять все остальные значения кортежа с помощью символа * (звездочки):
В примере выше применяется параметр *rest, который соответствует всем остальным элементам. То есть в примере выше шаблоны ("Tom", 37, *rest) и (name, age, *rest) соответствуют любому кортежу с двумя элементами и больше. Все элементы начиная с третьего будут помещаться в параметр rest, который представляет массив значений.
🐍 Укус питона // 💬 Чат // #теория #pattern_matching #кортежи
Кортеж с неопределенным количеством элементов.
Если нам этот параметр (rest) не важен, но мы по прежнему хотим, чтобы шаблон соответствовал кортежу с неопределенным количеством элементов, мы можем использовать подшаблон *_:
🐍 Укус питона // 💬 Чат // #теория #pattern_matching #кортежи
Если нам этот параметр (rest) не важен, но мы по прежнему хотим, чтобы шаблон соответствовал кортежу с неопределенным количеством элементов, мы можем использовать подшаблон *_:
🐍 Укус питона // 💬 Чат // #теория #pattern_matching #кортежи