Кортеж tuple представляє послідовність елементів, яка багато в чому схожа на список за тим винятком, що кортеж є незмінним immutable типом. Тому ми не можемо додавати або видаляти елементи в кортежі, змінювати його.
Для створення кортежу використовуються круглі дужки, в які поміщаються його значення, розділені комами:
user = ("Tom", 23) print(user)
Також для визначення кортежу ми можемо просто перерахувати значення через кому без застосування дужок:
user = "Tom", 23 print(user)
Якщо раптом кортеж складається з одного елемента, то після єдиного елемента кортежу необхідно поставити кому:
user = ("Tom",)
Для створення кортежу зі списку можна передати список у функцію tuple(), яка поверне кортеж:
users_list = ["Tom", "Bob", "Kate"] users_tuple = tuple(users_list) print(users_tuple) # ("Tom", "Bob", "Kate")
Звернення до елементів в кортежі відбувається також, як і в списку по індексу. Індексація починається також з нуля при отриманні елементів з початку списку і з -1 при отриманні елементів з кінця списку:
users = ("Tom", "Bob", "Sam", "Kate") print(users[0]) # Tom print(users[2]) # Sam print(users[-1]) # Kate # отримаємо частину кортежу з 2 елемента по 4 print(users[1:4]) # ("Bob", "Sam", "Kate")
Але так як кортеж - незмінний тип (immutable), то ми не зможемо змінити його елементи. Тобто наступний запис працювати не буде:
users[1] = "Tim"
При необхідності ми можемо розкласти кортеж на окремі змінні:
user = ("Tom", 22, False) name, age, isMarried = user print(name) # Tom print(age) # 22 print(isMarried) # False
Особливо зручно використовувати кортежі, коли необхідно повернути з функції відразу кілька значень. Коли функція повертає кілька значень, фактично вона повертає в кортеж:
def get_user(): name = "Tom" age = 22 is_married = False return name, age, is_married user = get_user() print(user[0]) # Tom print(user[1]) # 22 print(user[2]) # False
За допомогою вбудованої функції len() можна отримати довжину кортежу:
user = ("Tom", 22, False) print(len(user)) # 3
Перебір кортежів
Для перебору кортежу можна використовувати стандартні цикли for і while. За допомогою циклу for:
user = ("Tom", 22, False) for item in user: print(item)
За допомогою циклу while:
user = ("Tom", 22, False) i = 0 while i < len(user): print(user[i]) i += 1
Як для списку за допомогою виразу елемент in кортеж можна перевірити наявність елемента в кортежі:
user = ("Tom", 22, False) name = "Tom" if name in user: print ("користувача звати Tom") else: print("Користувач має інше ім'я")
Складні кортежі
Один кортеж може містити інші кортежі у вигляді елементів. Наприклад:
countries = ( ("Germany", 80.2, (("Berlin",3.326), ("Hamburg", 1.718))), ("France", 66, (("Paris", 2.2),("Marsel", 1.6))) ) for country in countries: countryName, countryPopulation, cities = country print("\nCountry: {} population: {}".format(countryName, countryPopulation)) for city in cities: cityName, cityPopulation = city print("City: {} population: {}".format(cityName, cityPopulation))
Тут кортеж countries, який представляє країни, складається з кортежів, кожен з яких-окрема країна.
Вкладені кортежі мають три елементи: назва країни, чисельність її населення і міста. Міста представляють окремий кортеж, де кожне окреме місто-це вкладений кортеж, що містить назву міста і чисельність його населення.