# Кортежи и их методы

### **1. Что такое кортеж**

* Кортеж — это **неизменяемая (immutable) последовательность объектов**.
* Создаётся с помощью круглых скобок `()` или просто перечислением элементов через запятую.

```python
t1 = (1, 2, 3)
t2 = 4, 5, 6
t3 = (1,)  # кортеж из одного элемента, нужна запятая
```

***

### **2. Особенности кортежей**

1. **Неизменяемость**
   * Элементы нельзя менять, добавлять или удалять после создания.
2. **Поддержка индексов и срезов**

```python
t = (1, 2, 3, 4)
print(t[0])   # 1
print(t[-1])  # 4
print(t[1:3]) # (2, 3)
```

3. **Могут содержать любые типы данных**

```python
t = (1, "text", [1,2], (3,4))
```

4. **Используются как ключи в словарях**

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

***

### **3. Основные методы кортежей**

* Кортежи имеют **очень мало встроенных методов**, так как они неизменяемы:

| Метод                            | Описание                                                             |
| -------------------------------- | -------------------------------------------------------------------- |
| `tuple.count(value)`             | Возвращает количество вхождений значения                             |
| `tuple.index(value, start, end)` | Возвращает индекс первого вхождения значения, можно указать диапазон |

```python
t = (1, 2, 3, 2)
print(t.count(2))  # 2
print(t.index(3))  # 2
```

* Для остального используют **функции и операции**, которые применимы к последовательностям: `len()`, `in`, `+`, `*`, `min()`, `max()`, `sum()`.

```python
t = (1, 2, 3)
print(len(t))    # 3
print(2 in t)    # True
print(t + (4,5)) # (1,2,3,4,5)
print(t * 2)     # (1,2,3,1,2,3)
```

***

### **4. Применение в автотестах**

* **Хранение фиксированных данных**

```python
user = ("Alice", "password123", True)
```

* **Возврат нескольких значений из функции**

```python
def get_user():
    return "Alice", "password123"

username, password = get_user()
```

* **Использование в качестве ключей словаря**

```python
location = {(10, 20): "Start", (30, 40): "End"}
print(location[(10, 20)])  # "Start"
```

* **Срезы и проверка данных**

```python
test_data = (1,2,3,4)
assert 3 in test_data
assert test_data[:2] == (1,2)
```

***

💡 **Вывод:**

* Кортежи — **неизменяемые последовательности**, поддерживают индексацию, срезы и два метода (`count`, `index`).
* Используются для **фиксированных данных, возврата нескольких значений, ключей словаря** и проверок данных в автотестах.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://kaze.gitbook.io/qa-theory/osnovy-programmirovaniya-na-python/kortezhi-i-ikh-metody.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
