Статьи

Плавное освежение на кортежах Python

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

Этот урок является продолжением серии обновлений Python, и сегодня я буду говорить о кортежах .   Таким образом, у вас будет три важных понятия в вашем кармане, и вы будете готовы углубиться в язык Python.

Итак, давайте продолжим и перейдем непосредственно к этой интересной теме Tuples .

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

  1. Кортежи являются неизменяемыми, поэтому после создания кортежа вы не сможете изменить его содержимое или даже размер, если не сделаете копию этого кортежа.
  2. Они пишутся в скобках ( ) а не в квадратных скобках [ ] .

Таким образом, как вы можете догадаться, кортежи состоят из набора упорядоченных объектов, которые могут быть любого типа (например, строки, списки, словари, кортежи и т. Д.) И доступны по индексу (смещению), в отличие от словарей, где элементы доступны по ключу . Здесь важно отметить, что кортежи хранят ссылки на объекты, которые они содержат.

Прежде чем перейти к некоторым операциям Tuple, давайте посмотрим, как выглядит простой Tuple:

tup = (1)

Это простой кортеж, который содержит один элемент, целочисленное значение. Выход этого кортежа будет 1 .

Другой пример Tuple с тремя элементами разных типов объектов выглядит следующим образом:

tup = (31,'abder',4.0)

Выход для вышеприведенного утверждения:

(31, 'abder', 4.0)

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

tup = 31,'abder',4.0

Очень гибкий, не правда ли?

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

nested_tuple = ('ID', ('abder', 1234))

Давайте теперь пройдемся по некоторым операциям Tuple.

Объединение — это комбинация кортежей вместе. Скажем, у нас есть следующие два кортежа:

tuple1 = (1,2,3,4,5)

tuple2 = (6,7,8,9,10)

Чтобы tuple1 и tuple2 , мы просто tuple2 :

tup = tuple1 + tuple2

Обратите внимание, что мы использовали оператор + для выполнения конкатенации. Это приведет к следующему выводу:

(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)

Повторение кортежа просто выполняется с помощью оператора * . Если мы хотим повторить tuple1 три раза, мы делаем следующее:

tuple1 * 3

Результат этого утверждения:

(1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5)

Чтобы проверить членство какого-либо элемента в кортеже, мы используем следующее:

7 in tuple1

Это вернет False поскольку 7 не принадлежит tuple1 .

Чтобы указать, где находится какой-либо элемент в кортеже, мы используем index . Например, если мы хотим найти местоположение элемента 5 в tuple1 , мы делаем следующее:

tuple1.index(5)

В этом случае возвращаемое значение будет 4 , которое является местоположением элемента 5 .

Хорошей операцией в Tuples является подсчет количества раз, когда элемент существует в Tuple. Скажем, у нас есть следующий кортеж:

tuple3 = (65,67,5,67,34,76,67,231,98,67)

Если мы хотим увидеть, сколько раз 67 существует в tuple3 , мы просто делаем следующее:

tuple3.count(67)

Результат для этого утверждения должен быть 4 раза.

Индексирование — это процесс доступа к элементу Tuple по индексу (индекс). Если мы хотим получить доступ к пятому индексу в tuple3 , мы делаем следующее:

tuple3[4]

который вернется 34 .

Индекс также может быть отрицательным, то есть отсчет начнется справа от кортежа. Таким образом, результат tuples3[-6] будет равен 34 , при условии, что диапазон отрицательных индексов в tuples3 равен [-1,-10] .

Что если вы выбрали индекс из этого диапазона? Как например tuples3[-11] ? Вот что вы получите в этом случае:

Traceback (most recent call last):

File "tuple.py", line 2, in <module>

print tuple3[-11]

IndexError: tuple index out of range

Обратите внимание, что отрицательные индексы начинаются с -1 . Итак, если вы ввели индекс как -0 , это то же самое, что и индекс 0 . Таким образом, tuples3[-0] вернет 65 .

В отличие от индексации , которая в результате дает нам один элемент, срезы предоставляют нам последовательность элементов. Примером нарезки является следующее утверждение:

tuples3[2:5]

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

(5, 67, 34)

Обратите внимание, что 76 не включен, хотя в действительности он находится в индексе 5 . Это связано с тем, что при нарезке start индекс всегда включен, а end индекс исключен, то есть end - 1 .

Другой пример Tuples выглядит следующим образом:

tuples3[:4]

Результат этого заявления будет следующим:

(65, 67, 5, 67)

Теперь это небольшая викторина для вас. Каков вывод следующего утверждения?

tuples3[4:]

Вы можете найти больше информации о Tuples из документации Python . Как вы могли заметить, хотя кортежи работают аналогично спискам, у них не так много методов, как списков, поскольку кортежи, как упоминалось выше, являются неизменяемыми, то есть содержимое кортежа не может быть изменено.