Кортежі Python
Кортеж 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, який представляє країни, складається з кортежів, кожен з яких-окрема країна.
Вкладені кортежі мають три елементи: назва країни, чисельність її населення і міста. Міста представляють окремий кортеж, де кожне окреме місто-це вкладений кортеж, що містить назву міста і чисельність його населення.