Python Tuple (с примери)

В тази статия ще научите всичко за кортежите на Python. По-конкретно, какво представляват кортежите, как да ги създавате, кога да ги използвате и различни методи, с които трябва да сте запознати.

Видео: Списъци на Python и Tuples

Кортеж в Python е подобен на списък. Разликата между двете е, че не можем да променяме елементите на един кортеж, след като той е присвоен, докато можем да променим елементите на списък.

Създаване на кортеж

Кортеж се създава чрез поставяне на всички елементи (елементи) в скоби (), разделени със запетаи. Скобите не са задължителни, но е добра практика да ги използвате.

Един кортеж може да има произволен брой елементи и те могат да бъдат от различни типове (цяло число, плаващ, списък, низ и т.н.).

 # Different types of tuples # Empty tuple my_tuple = () print(my_tuple) # Tuple having integers my_tuple = (1, 2, 3) print(my_tuple) # tuple with mixed datatypes my_tuple = (1, "Hello", 3.4) print(my_tuple) # nested tuple my_tuple = ("mouse", (8, 4, 6), (1, 2, 3)) print(my_tuple)

Изход

 () (1, 2, 3) (1, „Здравейте“, 3.4) („мишка“, (8, 4, 6), (1, 2, 3))

Кортеж може да бъде създаден и без използване на скоби. Това е известно като опаковане на кортежи.

 my_tuple = 3, 4.6, "dog" print(my_tuple) # tuple unpacking is also possible a, b, c = my_tuple print(a) # 3 print(b) # 4.6 print(c) # dog

Изход

 (3, 4.6, „куче“) 3 4.6 куче

Създаването на кортеж с един елемент е малко сложно.

Наличието на един елемент в скобите не е достатъчно. Ще ни е необходима задната запетая, за да покажем, че всъщност е кортеж.

 my_tuple = ("hello") print(type(my_tuple)) # # Creating a tuple having one element my_tuple = ("hello",) print(type(my_tuple)) # # Parentheses is optional my_tuple = "hello", print(type(my_tuple)) # 

Изход

 

Достъп до Tuple Elements

Има различни начини, по които можем да получим достъп до елементите на кортеж.

1. Индексиране

Можем да използваме индексния оператор ()за достъп до елемент в кортеж, където индексът започва от 0.

И така, един кортеж, съдържащ 6 елемента, ще има индекси от 0 до 5. Опитът за достъп до индекс извън обхвата на индекса на кортежа (6,7, … в този пример) ще изведе IndexError.

Индексът трябва да е цяло число, така че не можем да използваме float или други типове. Това ще доведе до TypeError.

По същия начин, вложени кортежи са достъпни с помощта на вложени индексиране, както е показано в примера по-долу.

 # Accessing tuple elements using indexing my_tuple = ('p','e','r','m','i','t') print(my_tuple(0)) # 'p' print(my_tuple(5)) # 't' # IndexError: list index out of range # print(my_tuple(6)) # Index must be an integer # TypeError: list indices must be integers, not float # my_tuple(2.0) # nested tuple n_tuple = ("mouse", (8, 4, 6), (1, 2, 3)) # nested index print(n_tuple(0)(3)) # 's' print(n_tuple(1)(1)) # 4

Изход

 точки 4

2. Отрицателно индексиране

Python позволява отрицателно индексиране за своите последователности.

Индексът -1 се отнася до последния елемент, -2 до втория последен елемент и т.н.

 # Negative indexing for accessing tuple elements my_tuple = ('p', 'e', 'r', 'm', 'i', 't') # Output: 't' print(my_tuple(-1)) # Output: 'p' print(my_tuple(-6))

Изход

 tp

3. Нарязване

Можем да получим достъп до набор от елементи в кортеж, като използваме двоеточието на оператора за нарязване :.

 # Accessing tuple elements using slicing my_tuple = ('p','r','o','g','r','a','m','i','z') # elements 2nd to 4th # Output: ('r', 'o', 'g') print(my_tuple(1:4)) # elements beginning to 2nd # Output: ('p', 'r') print(my_tuple(:-7)) # elements 8th to end # Output: ('i', 'z') print(my_tuple(7:)) # elements beginning to end # Output: ('p', 'r', 'o', 'g', 'r', 'a', 'm', 'i', 'z') print(my_tuple(:))

Изход

 ('r', 'o', 'g') ('p', 'r') ('i', 'z') ('p', 'r', 'o', 'g', 'r ',' a ',' m ',' i ',' z ')

Нарязването може да бъде най-добре визуализирано, като се има предвид, че индексът е между елементите, както е показано по-долу. Така че, ако искаме да осъществим достъп до диапазон, се нуждаем от индекса, който ще наряза частта от кортежа.

Нарязване на елементи в Python

Смяна на кортеж

За разлика от списъците, кортежите са неизменни.

Това означава, че елементи на кортеж не могат да бъдат променяни, след като са били присвоени. Но ако самият елемент е променлив тип данни като списък, неговите вложени елементи могат да бъдат променени.

Можем също да присвоим кортеж на различни стойности (преназначаване).

 # Changing tuple values my_tuple = (4, 2, 3, (6, 5)) # TypeError: 'tuple' object does not support item assignment # my_tuple(1) = 9 # However, item of mutable element can be changed my_tuple(3)(0) = 9 # Output: (4, 2, 3, (9, 5)) print(my_tuple) # Tuples can be reassigned my_tuple = ('p', 'r', 'o', 'g', 'r', 'a', 'm', 'i', 'z') # Output: ('p', 'r', 'o', 'g', 'r', 'a', 'm', 'i', 'z') print(my_tuple)

Изход

 (4, 2, 3, (9, 5)) ('p', 'r', 'o', 'g', 'r', 'a', 'm', 'i', 'z')

We can use + operator to combine two tuples. This is called concatenation.

We can also repeat the elements in a tuple for a given number of times using the * operator.

Both + and * operations result in a new tuple.

 # Concatenation # Output: (1, 2, 3, 4, 5, 6) print((1, 2, 3) + (4, 5, 6)) # Repeat # Output: ('Repeat', 'Repeat', 'Repeat') print(("Repeat",) * 3)

Output

 (1, 2, 3, 4, 5, 6) ('Repeat', 'Repeat', 'Repeat')

Deleting a Tuple

As discussed above, we cannot change the elements in a tuple. It means that we cannot delete or remove items from a tuple.

Deleting a tuple entirely, however, is possible using the keyword del.

 # Deleting tuples my_tuple = ('p', 'r', 'o', 'g', 'r', 'a', 'm', 'i', 'z') # can't delete items # TypeError: 'tuple' object doesn't support item deletion # del my_tuple(3) # Can delete an entire tuple del my_tuple # NameError: name 'my_tuple' is not defined print(my_tuple)

Output

 Traceback (most recent call last): File "", line 12, in NameError: name 'my_tuple' is not defined

Tuple Methods

Methods that add items or remove items are not available with tuple. Only the following two methods are available.

Some examples of Python tuple methods:

 my_tuple = ('a', 'p', 'p', 'l', 'e',) print(my_tuple.count('p')) # Output: 2 print(my_tuple.index('l')) # Output: 3

Output

 2 3

Other Tuple Operations

1. Tuple Membership Test

We can test if an item exists in a tuple or not, using the keyword in.

 # Membership test in tuple my_tuple = ('a', 'p', 'p', 'l', 'e',) # In operation print('a' in my_tuple) print('b' in my_tuple) # Not in operation print('g' not in my_tuple)

Output

 True False True

2. Iterating Through a Tuple

We can use a for loop to iterate through each item in a tuple.

 # Using a for loop to iterate through a tuple for name in ('John', 'Kate'): print("Hello", name)

Output

 Hello John Hello Kate

Advantages of Tuple over List

Since tuples are quite similar to lists, both of them are used in similar situations. However, there are certain advantages of implementing a tuple over a list. Below listed are some of the main advantages:

  • Обикновено използваме кортежи за разнородни (различни) типове данни и списъци за хомогенни (подобни) типове данни.
  • Тъй като кортежите са неизменни, итерацията през кортеж е по-бърза, отколкото при списък. Така че има леко повишаване на производителността.
  • Кортежи, които съдържат неизменяеми елементи, могат да се използват като ключ за речник. При списъците това не е възможно.
  • Ако имате данни, които не се променят, внедряването им като кортеж ще гарантира, че те остават защитени срещу запис.

Интересни статии...