Рубрики
Без рубрики

Кортежи Python и методы кортежей

Списки и кортежи-это стандартные типы данных Python, которые хранят значения в последовательности. “Кортеж` является **неизменяемым**, в то время как “список” является **изменяемым.** Вот некоторые другие преимущества кортежей перед списками (частично из [StackOverflow](https://stackoverflow.com/questions/1708510/python-list-vs-tuple-when-to-use-each))

Автор оригинала: Michael.

Кортежи-это упорядоченные последовательности элементов, как и списки. Основное различие между кортежами и списками заключается в том, что кортежи не могут быть изменены (неизменяемы) в отличие от списков, которые могут (изменяемы).

Инициализировать кортеж

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

# Way 1
emptyTuple = ()

Вы также можете инициализировать пустой кортеж с помощью функции tuple .

# Way 2
emptyTuple = tuple()

Кортеж со значениями может быть инициализирован путем создания последовательности значений, разделенных запятыми.

# way 1
z = (3, 7, 4, 2)

# way 2 (tuples can also can be created without parenthesis)
z = 3, 7, 4, 2

Вы можете инициализировать кортеж с круглыми скобками или без них

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

# tuple with one value
tup1 = ('Michael',)

# tuple with one value
tup2 = 'Michael',

# This is a string, NOT a tuple.
notTuple = ('Michael')

Доступ к значениям в кортежах

Вы можете инициализировать кортеж с круглыми скобками или без них

Каждое значение в кортеже имеет назначенное значение индекса. Важно отметить, что python – это язык, основанный на нулевой индексации. Все это означает, что первое значение в кортеже имеет индекс 0.

# Initialize a tuple
z = (3, 7, 4, 2)

# Access the first item of a tuple at index 0
print(z[0])

Вывод доступа к элементу с индексом 0.

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

# print last item in the tuple
print(z[-1])

Вывод доступа к последнему элементу в кортеже

Напомним, что вы также можете получить доступ к тому же элементу, используя положительные индексы (как показано ниже).

Альтернативный способ доступа к последнему элементу в кортеже z

Срезы кортежа

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

Первый индекс является включающим (до:), а последний (после:) – нет

# Initialize a tuple
z = (3, 7, 4, 2)

# first index is inclusive (before the : ) and last (after the : ) is not.
print(z[0:2])

Фрагмент синтаксиса кортежа

# everything up to but not including index 3
print(z[:3])

Все до индекса 3, но не включая его

Вы даже можете сделать срезы с отрицательными индексами.

print(z[-4:-1])

Кортежи неизменны

Кортежи являются неизменяемыми, что означает, что после инициализации кортежа невозможно обновить отдельные элементы в кортеже. Как вы можете видеть в приведенном ниже коде, вы не можете обновлять или изменять значения элементов кортежа (это отличается от списков Python , которые являются изменяемыми).

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

# Initialize tuple
tup1 = ('Python', 'SQL')

# Initialize another Tuple
tup2 = ('R',)

# Create new tuple based on existing tuples
new_tuple = tup1 + tup2;
print(new_tuple)

Методы кортежей

Прежде чем начать этот раздел, давайте сначала инициализируем кортеж.

# Initialize a tuple
animals = ('lama', 'sheep', 'lama', 48)

индексный метод

Метод index возвращает первый индекс, в котором встречается значение.

print(animals.index('lama'))

метод подсчета

Метод count возвращает количество раз, когда значение встречается в кортеже.

print(animals.count('lama'))

Строка “лама” появляется дважды в кортеже животных

Итерация по кортежу

Вы можете перебирать элементы кортежа с помощью цикла for.

for item in ('lama', 'sheep', 'lama', 48):
   print(item)

Распаковка кортежа

Кортежи полезны для распаковки последовательностей.

x, y = (7, 10);
print("Value of x is {}, the value of y is {}.".format(x, y))

Перечислять

Функция enumerate возвращает кортеж, содержащий счетчик для каждой итерации (с начала, значение по умолчанию равно 0) и значения, полученные в результате итерации по последовательности:

friends = ('Steve', 'Rachel', 'Michael', 'Monica')
for index, friend in enumerate(friends):
    print(index,friend)

Преимущества кортежей перед списками

Списки и кортежи-это стандартные типы данных Python, которые хранят значения в последовательности./| Кортеж является неизменяемым , тогда как список является изменяемым. Вот некоторые другие преимущества кортежей перед списками (частично из Переполнения стека )

  • Кортежи быстрее, чем списки. Если вы определяете постоянный набор значений и все, что вы когда-либо собираетесь с ним делать, – это перебирать его, используйте кортеж вместо списка. Разница в производительности может быть частично измерена с помощью библиотеки timeit , которая позволяет синхронизировать код Python. Приведенный ниже код запускает код для каждого подхода 1 миллион раз и выводит общее время, которое потребовалось в секундах.
import timeit

print(timeit.timeit('x=(1,2,3,4,5,6,7,8,9,10,11,12)', number=1000000))

print(timeit.timeit('x=[1,2,3,4,5,6,7,8,9,10,11,12]', number=1000000))
  • Некоторые кортежи могут использоваться в качестве ключей словаря (в частности, кортежи, содержащие неизменяемые значения, такие как строки, числа и другие кортежи). Списки никогда не могут использоваться в качестве ключей словаря, поскольку списки не являются неизменяемыми (вы можете узнать о словарях здесь ).
  • Кортежи могут использоваться в качестве значений в наборах, в то время как списки не могут (вы можете узнать больше о наборах здесь )

Вывод

Если у вас есть какие-либо вопросы или мысли по учебнику, не стесняйтесь обращаться к нам в комментариях ниже или через Twitter . Обзор следующего поста Словари Python и словарные методы .

Учебник по словарю Python