Кортежи-это упорядоченные последовательности элементов, как и списки. Основное различие между кортежами и списками заключается в том, что кортежи не могут быть изменены (неизменяемы) в отличие от списков, которые могут (изменяемы).
Инициализировать кортеж
Существует два способа инициализации пустого кортежа. Вы можете инициализировать пустой кортеж, имея () без значений в них.
# 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