---
title: Типы и коллекции Python
seo:
  description: >-
    Тема «Типы и коллекции Python» для собеседования Data Analyst. В чем разница
    между списком и кортежем? В чем разница между “is” и “==”?
  title: Типы и коллекции Python — Data Analyst
---

[Все темы Data Analyst](/prep/data-analyst)

Подтемы:

- [Основы Python](#q-14bee738d69b815ea3d9ef619289161d)
- [Списки](#q-14bee738d69b8105b50bdda995b9d393)
- [Строки](#q-14bee738d69b81b2a152f678095db071)
- [Словари](#q-14bee738d69b8172b73edf25a367c373)
- [Операции над числами](#q-14bee738d69b81cb8c3ddc40c8d35571)

## <strong>В чем разница между списком и кортежем?</strong> [#q-14bee738d69b815ea3d9ef619289161d]

Основные различия между списком и кортежем в Python&#58;

{/* prettier-ignore */}
1. <strong>Изменяемость</strong>&#58;

    - <strong>Список (</strong><code>list</code><strong>)</strong>&#58; изменяемый (можно добавлять, удалять или изменять элементы).

    - <strong>Кортеж (</strong><code>tuple</code><strong>)</strong>&#58; неизменяемый (после создания элементы изменить нельзя).

1. <strong>Синтаксис</strong>&#58;

    - <strong>Список</strong>&#58; создается с помощью квадратных скобок <code>&#91;&#93;</code>.

        ```python
        my_list = [1, 2, 3]
        ```

    - <strong>Кортеж</strong>&#58; создается с помощью круглых скобок <code>&#40;&#41;</code>.

        ```python
        my_tuple = (1, 2, 3)
        ```

1. <strong>Производительность</strong>&#58;

    - <strong>Кортеж</strong>&#58; обычно имеет немного более высокую производительность из-за неизменяемости.

1. <strong>Использование</strong>&#58;

    - <strong>Список</strong>&#58; используется, когда нужно часто изменять содержимое.

    - <strong>Кортеж</strong>&#58; используется для хранения неизменяемых данных или когда нужно гарантировать, что данные не будут изменены.

:::note[Ссылки для изучения]

1. [Python: списки и кортежи, изменяемость и операции](https://education.yandex.ru/handbook/python/article/stroki-kortezhi-spiski)
2. [Строки и списки Python. Алексей Богатырев | Data Engineer, с 1:11:41](https://www.youtube.com/watch?v=XhK7AQ-jsW4&t=4301s)

:::

---

## <strong>В чем разница между “</strong><code>is</code><strong>” и “</strong><code>&#61;&#61;</code><strong>”?</strong> [#q-14bee738d69b81b0955cf002e0713ce7]

Основные различия между операторами <code>is</code> и <code>&#61;&#61;</code> в Python&#58;

{/* prettier-ignore */}
1. <strong>Сравнение объектов</strong>&#58;

    - <code>is</code>&#58; проверяет, ссылаются ли две переменные на один и тот же объект в памяти (т.е. проверяет идентичность объектов).

        ```python
        a = [1, 2, 3]
        b = a
        print(a is b)  # True
        ```

    - <code>&#61;&#61;</code>&#58; проверяет, равны ли значения двух объектов (т.е. проверяет равенство значений).

        ```python
        a = [1, 2, 3]
        b = [1, 2, 3]
        print(a == b)  # True
        print(a is b)  # False
        ```

:::note[Ссылки для изучения]

1. [Изменяемые объекты и модель памяти Python](https://education.yandex.ru/handbook/python/article/spisochnye-vyrazheniya-model-pamyati-dlya-tipov-yazyka-python)
   :::

---

## <strong>Переменные в Python передаются по ссылке или по значению?</strong> [#q-14bee738d69b8197b16befffe3725049]

При вызове функции параметры связываются с переданными объектами. Автоматического копирования нет ни для изменяемых, ни для неизменяемых объектов. Изменение переданного списка видно снаружи, а присваивание параметру нового объекта меняет только локальную привязку имени.

Примеры&#58;

1. <strong>Изменяемые объекты</strong>&#58;

   ```python
   def modify_list(lst):
       lst.append(4)

   my_list = [1, 2, 3]
   modify_list(my_list)
   print(my_list)  # [1, 2, 3, 4]
   ```

1. <strong>Неизменяемые объекты</strong>&#58;

   ```python
   def modify_number(n):
       n += 1

   my_number = 10
   modify_number(my_number)
   print(my_number)  # 10
   ```

:::note[Ссылки для изучения]

1. [Python: имена, области видимости и связывание объектов](https://docs.python.org/ru/3/tutorial/classes.html#python-scopes-and-namespaces)
   :::

---

## <strong>Назовите изменяемые и неизменяемые объекты</strong> [#q-14bee738d69b8179bf78fa734e5dc08f]

<strong>Изменяемые объекты</strong>&#58;

1. Список (<code>list</code>)

1. Словарь (<code>dict</code>)

1. Множество (<code>set</code>)

1. Массивы из библиотеки <code>numpy</code> (например, <code>numpy&#46;array</code>)

<strong>Неизменяемые объекты</strong>&#58;

1. Числа (<code>int</code>, <code>float</code>, <code>complex</code>)

1. Строки (<code>str</code>)

1. Кортежи (<code>tuple</code>)

1. Неизменяемые множества (<code>frozenset</code>)

1. Булевы значения (<code>bool</code>)

:::note[Ссылки для изучения]

1. [Изменяемые объекты и модель памяти Python](https://education.yandex.ru/handbook/python/article/spisochnye-vyrazheniya-model-pamyati-dlya-tipov-yazyka-python)
   :::

---

## <strong>Как развернуть список?</strong> [#q-14bee738d69b8105b50bdda995b9d393]

В Python список можно развернуть несколькими способами&#58;

1. <strong>Используя срезы</strong>&#58; Это наиболее простой и часто
   используемый способ.

   ```python
   my_list = [1, 2, 3, 4, 5]
   reversed_list = my_list[::-1]
   ```

1. <strong>С помощью метода</strong> <code>reverse&#40;&#41;</code>&#58; Этот
   метод изменяет список на месте, не создавая новый.

   ```python
   my_list = [1, 2, 3, 4, 5]
   my_list.reverse()
   ```

1. <strong>С использованием функции</strong> <code>reversed&#40;&#41;</code>
   &#58; Эта функция возвращает итератор, который возвращает элементы списка в
   обратном порядке.

   ```python
   my_list = [1, 2, 3, 4, 5]
   reversed_list = list(reversed(my_list))
   ```

Срез и list(reversed(...)) создают новый список. Метод reverse() изменяет исходный список и возвращает None; reversed() сам по себе возвращает итератор.

:::note[Ссылки для изучения]

1. [Строки, кортежи, списки в Python](https://education.yandex.ru/handbook/python/article/stroki-kortezhi-spiski)
   :::

---

## <strong>Как работает умножение списка?</strong> [#q-14bee738d69b816986b3c78dddda9271]

Умножение списка в Python создает новый список, повторяя исходный список заданное количество раз.

Пример&#58;

```python
my_list = [1, 2, 3]
result = my_list * 3
print(result)  # [1, 2, 3, 1, 2, 3, 1, 2, 3]
```

В этом примере список <code>my_list</code> умножается на <code>3</code>, что приводит к созданию нового списка <code>result</code>, который содержит элементы <code>my_list</code>, повторенные три раза подряд.

:::note[Ссылки для изучения]

1. [Строки, кортежи, списки в Python](https://education.yandex.ru/handbook/python/article/stroki-kortezhi-spiski)
2. [Строки и списки Python. Алексей Богатырев | Data Engineer, с 1:11:41](https://www.youtube.com/watch?v=XhK7AQ-jsW4&t=4301s)

:::

---

## <strong>Как объединить списки в Python?</strong> [#q-14bee738d69b81efb493c4a6209c8921]

В Python списки можно объединить несколькими способами&#58;

1. <strong>Используя оператор</strong> <code>&#43;</code>&#58;

   ```python
   list1 = [1, 2, 3]
   list2 = [4, 5, 6]
   combined_list = list1 + list2
   ```

1. <strong>Используя метод</strong> <code>extend&#40;&#41;</code>&#58;

   ```python
   list1 = [1, 2, 3]
   list2 = [4, 5, 6]
   list1.extend(list2)
   ```

1. <strong>Используя списковое выражение</strong>&#58;

   ```python
   list1 = [1, 2, 3]
   list2 = [4, 5, 6]
   combined_list = list1 + list2
   ```

Оператор + создаёт новый список, а extend() изменяет исходный список на месте и возвращает None.

:::note[Ссылки для изучения]

1. [Строки, кортежи, списки в Python](https://education.yandex.ru/handbook/python/article/stroki-kortezhi-spiski)
2. [Строки и списки Python. Алексей Богатырев | Data Engineer, с 1:11:41](https://www.youtube.com/watch?v=XhK7AQ-jsW4&t=4301s)

:::

---

## <strong>В чем разница между глубокой и мелкой копиями?</strong> [#q-14bee738d69b8114b10bc4a22e1fa22c]

Разница между глубокой и мелкой копиями в Python связана с тем, как копируются вложенные структуры данных, такие как списки или словари&#58;

<strong>Мелкая копия (</strong>
<code>shallow copy</code>
<strong>)</strong>&#58;

- Создается новый объект, но вложенные объекты остаются ссылками на оригинальные объекты.

- Изменения вложенных объектов в копии будут отражены в оригинале.

- Для создания мелкой копии можно использовать метод <code>&#46;copy&#40;&#41;</code> у списка или словаря или функцию <code>copy&#46;copy&#40;&#41;</code> из модуля <code>copy</code>.

Пример мелкой копии списка&#58;

```python
import copy

list1 = [1, [2, 3]]
list2 = copy.copy(list1)

list2[1][0] = 4
print(list1)  # [1, [4, 3]]
print(list2)  # [1, [4, 3]]
```

<strong>Глубокая копия (</strong>
<code>deep copy</code>
<strong>)</strong>&#58;

- Создается новый объект и рекурсивно копируются все вложенные объекты.

- Изменения в глубокой копии не влияют на оригинал и наоборот.

- Для создания глубокой копии можно использовать функцию <code>copy&#46;deepcopy&#40;&#41;</code> из модуля <code>copy</code>.

Пример глубокой копии списка&#58;

```python
import copy

list1 = [1, [2, 3]]
list2 = copy.deepcopy(list1)

list2[1][0] = 4
print(list1)  # [1, [2, 3]]
print(list2)  # [1, [4, 3]]
```

Таким образом, при работе с изменяемыми вложенными структурами данных важно понимать разницу между мелкой и глубокой копиями для предотвращения неожиданных побочных эффектов.

:::note[Ссылки для изучения]

1. [Python: поверхностное и глубокое копирование объектов](https://docs-python.ru/standart-library/modul-copy-python/)
   :::

---

## <strong>В чем разница между списками и массивами?</strong> [#q-14bee738d69b81628878c52e1ac8ace3]

Основные различия между списками (<code>list</code>) и массивами в контексте Python&#58;

{/* prettier-ignore */}
1. <strong>Использование</strong>&#58;

    - <strong>Списки (</strong><code>list</code><strong>)</strong>&#58; универсальная структура данных, которая может содержать элементы различных типов и изменяться в размере.

    - <strong>Массивы</strong>&#58; в Python обычно используются массивы из библиотеки <code>numpy</code> (<code>numpy&#46;array</code>). Они предназначены для работы с числовыми данными и обеспечивают эффективные операции над большими объемами данных.

1. <strong>Типы данных</strong>&#58;

    - <strong>Списки (</strong><code>list</code><strong>)</strong>&#58; могут содержать элементы различных типов данных (например, числа, строки, другие списки и т.д.).

    - <strong>Массивы</strong>&#58; обычно содержат элементы одного типа данных (например, только числа типа <code>float</code> или <code>int</code>).

1. <strong>Производительность</strong>&#58;

    - <strong>Массивы</strong>&#58; операции с массивами из <code>numpy</code> обычно выполняются более эффективно благодаря оптимизированным внутренним реализациям.

    - <strong>Списки (</strong><code>list</code><strong>)</strong>&#58; менее эффективны для числовых вычислений из-за динамической природы и возможности хранения различных типов данных.

1. <strong>Изменяемость</strong>&#58;

    - Оба типа данных в Python изменяемы и могут изменяться в размере, однако массивы <code>numpy</code> предпочтительны для операций, которые требуют изменения больших объемов данных из-за своей эффективной реализации и оптимизации.

:::note[Ссылки для изучения]

1. [NumPy: массивы, тип данных и отличие от списков](https://education.yandex.ru/handbook/python/article/moduli-math-i-numpy)
2. [Строки и списки Python. Алексей Богатырев | Data Engineer, с 1:11:41](https://www.youtube.com/watch?v=XhK7AQ-jsW4&t=4301s)

:::

---

## <strong>Как объединить два массива?</strong> [#q-14bee738d69b812ea516df3a299275db]

В Python, особенно если речь идет о массивах из библиотеки NumPy, для объединения двух массивов можно использовать функцию <code>numpy&#46;concatenate&#40;&#41;</code> или оператор <code>&#43;</code> для списков (если мы говорим о стандартных списках Python)&#58;

1. <strong>Для списков (стандартных массивов в Python)</strong>&#58;

   ```python
   array1 = [1, 2, 3]
   array2 = [4, 5, 6]
   combined_array = array1 + array2
   ```

1. <strong>Для массивов NumPy</strong>&#58;

   ```python
   import numpy as np

   array1 = np.array([1, 2, 3])
   array2 = np.array([4, 5, 6])
   combined_array = np.concatenate((array1, array2))
   ```

В обоих случаях <code>combined_array</code> будет содержать объединенные элементы <code>array1</code> и <code>array2</code>.

:::note[Ссылки для изучения]

1. [NumPy concatenate: объединение по заданной оси](https://numpy.ru/spravochnoe-rukovodstvo/operaczii-nad-massivami/concatenate/)
2. [Строки и списки Python. Алексей Богатырев | Data Engineer, с 1:11:41](https://www.youtube.com/watch?v=XhK7AQ-jsW4&t=4301s)

:::

---

## <strong>Что такое срезы списка? Как их делать?</strong> [#q-14bee738d69b8108a651e1d619a4edbf]

Срезы списка в Python позволяют извлекать подмножество элементов из списка по заданным индексам. Они делаются с использованием синтаксиса <code>&#91;start&#58;stop&#58;step&#93;</code>, где&#58;

- <code>start</code>&#58; начальный индекс (включительно), с которого начинается
  срез (по умолчанию 0).

- <code>stop</code>&#58; конечный индекс (исключительно), на котором
  заканчивается срез (по умолчанию длина списка).

- <code>step</code>&#58; шаг (по умолчанию 1), определяющий интервал между
  выбранными элементами.

Примеры использования срезов&#58;

```python
my_list = [1, 2, 3, 4, 5]

# Получение элементов с индексами от 1 до 3 (не включая 3)
slice1 = my_list[1:3]
# slice1 = [2, 3]

# Получение элементов с индексами от 0 до 4 с шагом 2
slice2 = my_list[0:4:2]
# slice2 = [1, 3]

# Получение элементов с индексами от 2 до конца списка
slice3 = my_list[2:]
# slice3 = [3, 4, 5]

# Получение элементов с индексами от начала до 3 (не включая 3)
slice4 = my_list[:3]
# slice4 = [1, 2, 3]

# Получение элементов с индексами в обратном порядке
slice5 = my_list[::-1]
# slice5 = [5, 4, 3, 2, 1]
```

:::note[Ссылки для изучения]

1. [Строки, кортежи, списки в Python](https://education.yandex.ru/handbook/python/article/stroki-kortezhi-spiski)
2. [Строки и списки Python. Алексей Богатырев | Data Engineer, с 1:11:41](https://www.youtube.com/watch?v=XhK7AQ-jsW4&t=4301s)

:::

---

## <strong>Как работают</strong> <code>any&#40;&#41;</code> <strong>и</strong> <code>all&#40;&#41;</code><strong>?</strong> [#q-14bee738d69b813bbb59e0ed3a882c18]

Функции <code>any&#40;&#41;</code> и <code>all&#40;&#41;</code> в Python предназначены для работы с итерируемыми объектами (например, списками, кортежами) и возвращают булевое значение <code>True</code> или <code>False</code> в зависимости от условий&#58;

{/* prettier-ignore */}
1. <code>any&#40;iterable&#41;</code>&#58;

    - Возвращает <code>True</code>, если хотя бы один элемент в итерируемом объекте истинный (не равен <code>False</code>, <code>0</code>, <code>None</code> или пустой объект).

    - Если все элементы ложные, возвращает <code>False</code>.

    Пример&#58;

    ```python
    list1 = [True, False, True]
    result = any(list1)
    print(result)  # Вывод: True
    ```

1. <code>all&#40;iterable&#41;</code>&#58;

    - Возвращает <code>True</code>, если все элементы в итерируемом объекте истинные (не равны <code>False</code>, <code>0</code>, <code>None</code> или пусты).

    - Если хотя бы один элемент ложный, возвращает <code>False</code>.

    Пример&#58;

    ```python
    list2 = [True, True, False]
    result = all(list2)
    print(result)  # Вывод: False
    ```

Обе функции полезны для проверки условий в списке или других структурах данных, где требуется быстро выяснить, содержит ли объект хотя бы одно истинное или все элементы истинные.

:::note[Ссылки для изучения]

1. [Python: встроенные функции all и any](https://docs.python.org/ru/3/library/functions.html#all)
   :::

---

## <strong>Как удалить из списка дубликаты?</strong> [#q-14bee738d69b819dbba5d8b549877caa]

Для удаления дубликатов из списка в Python можно использовать несколько подходов. Вот два основных способа&#58;

{/* prettier-ignore */}
1. <strong>С использованием типа данных set</strong>&#58;

    - Преобразовать список в множество (<code>set</code>), так как множество автоматически удаляет дубликаты.

    - Преобразуйте множество обратно в список, если нужен результат типа list. Исходный порядок при этом не восстанавливается.

    ```python
    my_list = [1, 2, 2, 3, 4, 4, 5]
    unique_items = list(set(my_list))
    ```

    Этот метод прост и эффективен, однако не сохраняет порядок элементов изначального списка.

1. <strong>С использованием списка и цикла</strong>&#58;

    - Создать новый список и добавлять в него элементы из исходного списка, если они еще не встречались.

    ```python
    my_list = [1, 2, 2, 3, 4, 4, 5]
    unique_items = []
    for item in my_list:
        if item not in unique_items:
            unique_items.append(item)
    ```

    Этот метод сохраняет порядок элементов, но менее эффективен по времени выполнения, особенно для больших списков.

Выбор метода зависит от конкретной задачи&#58; использование множества (<code>set</code>) предпочтительно для простого удаления дубликатов, если порядок не важен, в то время как цикл и проверка позволяют сохранить порядок элементов, но могут быть менее эффективными.

:::note[Ссылки для изучения]

1. [Множества Python: удаление повторов](https://docs.python.org/ru/3/tutorial/datastructures.html#sets)
2. [Строки и списки Python. Алексей Богатырев | Data Engineer, с 1:11:41](https://www.youtube.com/watch?v=XhK7AQ-jsW4&t=4301s)

:::

---

## <strong>В чем разница между</strong> <code>append</code> <strong>и</strong> <code>extend</code><strong>?</strong> [#q-14bee738d69b81168b07d322adabb9a4]

Разница между методами <code>append&#40;&#41;</code> и <code>extend&#40;&#41;</code> в Python заключается в способе добавления элементов в конец списка&#58;

{/* prettier-ignore */}
1. <code>append&#40;&#41;</code>&#58;

    - Добавляет элемент в конец списка как один элемент.

    - Принимает один аргумент, который может быть любым типом данных (число, строка, объект и т.д.).

    Пример&#58;

    ```python
    my_list = [1, 2, 3]
    my_list.append(4)
    print(my_list)  # Вывод: [1, 2, 3, 4]
    ```

1. <code>extend&#40;&#41;</code>&#58;

    - Расширяет список, добавляя элементы из итерируемого объекта (например, другого списка) в конец текущего списка.

    - Принимает один аргумент, который должен быть итерируемым объектом (список, кортеж, строка и т.д.).

    Пример&#58;

    ```python
    my_list = [1, 2, 3]
    another_list = [4, 5, 6]
    my_list.extend(another_list)
    print(my_list)  # Вывод: [1, 2, 3, 4, 5, 6]
    ```

Таким образом, <code>append&#40;&#41;</code> добавляет один элемент в конец списка, а <code>extend&#40;&#41;</code> добавляет элементы из другого итерируемого объекта в конец текущего списка, расширяя его.

:::note[Ссылки для изучения]

1. [Строки, кортежи, списки в Python](https://education.yandex.ru/handbook/python/article/stroki-kortezhi-spiski)
   :::

---

## <strong>В чем разница между</strong> <code>remove</code><strong>,</strong> <code>del</code> <strong>и</strong> <code>pop</code><strong>?</strong> [#q-14bee738d69b81438e78c036885990b6]

В Python есть три основных способа удаления элементов из списка, каждый из которых имеет свои особенности&#58;

{/* prettier-ignore */}
1. <code>remove&#40;&#41;</code>&#58;

    - Удаляет первое вхождение указанного значения из списка.

    - Если значение не найдено, возникает ошибка <code>ValueError</code>.

    Пример&#58;

    ```python
    my_list = [1, 2, 3, 2]
    my_list.remove(2)
    print(my_list)  # Вывод: [1, 3, 2]
    ```

1. <code>del</code>&#58;

    - Удаляет элемент по индексу или срезу.

    - Не возвращает значение элемента.

    - Позволяет удалить несколько элементов за раз, используя срезы.

    Пример удаления элемента по индексу&#58;

    ```python
    my_list = [1, 2, 3]
    del my_list[1]
    print(my_list)  # Вывод: [1, 3]
    ```

    Пример удаления элементов с использованием среза&#58;

    ```python
    my_list = [1, 2, 3, 4, 5]
    del my_list[1:3]
    print(my_list)  # Вывод: [1, 4, 5]
    ```

1. <code>pop&#40;&#41;</code>&#58;

    - Удаляет элемент по индексу и возвращает его значение.

    - Если индекс не указан, удаляется и возвращается последний элемент списка.

    Пример удаления и получения значения элемента по индексу&#58;

    ```python
    my_list = [1, 2, 3]
    popped_value = my_list.pop(1)
    print(my_list)      # Вывод: [1, 3]
    print(popped_value) # Вывод: 2
    ```

:::note[Ссылки для изучения]

1. [Строки, кортежи, списки в Python](https://education.yandex.ru/handbook/python/article/stroki-kortezhi-spiski)
   :::

---

## <strong>Как выполняется интерполяция строк?</strong> [#q-14bee738d69b81b2a152f678095db071]

Интерполяция строк в Python выполняется несколькими способами&#58;

1. <strong>f-строки</strong> (форматированные строковые литералы)&#58;

   ```python
   name = "Alice"
   age = 30
   result = f"My name is {name} and I am {age} years old."
   ```

1. <strong>Метод</strong> <code>&#46;format&#40;&#41;</code>&#58;

   ```python
   name = "Alice"
   age = 30
   result = "My name is {} and I am {} years old.".format(name, age)
   ```

1. <strong>Оператор</strong> <code>&#37;</code>&#58;

   ```python
   name = "Alice"
   age = 30
   result = "My name is %s and I am %d years old." % (name, age)
   ```

Все эти способы позволяют вставлять значения переменных в строки.

:::note[Ссылки для изучения]

1. [Форматирование строк Python: format и f-строки](https://proproprogs.ru/python_base/python3-formatirovanie-strok-metod-format-i-f-stroki)
2. [Строки и списки Python. Алексей Богатырев | Data Engineer, с 1:11:41](https://www.youtube.com/watch?v=XhK7AQ-jsW4&t=4301s)

:::

---

## <strong>Как работает умножение строк?</strong> [#q-14bee738d69b819a95d6cf79f151b14b]

Умножение строк в Python повторяет строку указанное количество раз. Используется оператор <code>\*</code>.

Пример&#58;

```python
text = "Hello"
result = text * 3
print(result)  # "HelloHelloHello"
```

Этот код создает новую строку, состоящую из трех повторений строки <code>text</code>.

:::note[Ссылки для изучения]

1. [Повторение строк и базовые операции Python](https://proproprogs.ru/python_base/python3-vvedenie-v-stroki-bazovye-operacii-nad-strokami)
2. [Строки и списки Python. Алексей Богатырев | Data Engineer, с 1:11:41](https://www.youtube.com/watch?v=XhK7AQ-jsW4&t=4301s)

:::

---

## <strong>Какая разница между словарями и</strong> <code>JSON</code><strong>?</strong> [#q-14bee738d69b8172b73edf25a367c373]

Основные различия между словарями в Python и <code>JSON</code> (JavaScript Object Notation)&#58;

{/* prettier-ignore */}
1. <strong>Синтаксис и представление</strong>&#58;

    - Словарь dict в Python хранит пары ключ-значение и сохраняет порядок вставки ключей. Ключи должны быть хешируемыми; равные ключи обозначают одну запись.

    - <strong>JSON</strong>&#58; это текстовый формат для представления структурированных данных, состоящий из пар ключ-значение, аналогично словарям в Python. Он используется для обмена данными между различными платформами и является более универсальным.

1. <strong>Использование</strong>&#58;

    - <strong>Словари в Python</strong>&#58; используются внутри программы для организации и обработки данных.

    - <strong>JSON</strong>&#58; часто используется для передачи данных между клиентом и сервером или для сохранения данных в файлы, когда требуется обмен информацией между различными языками программирования.

1. <strong>Поддержка типов данных</strong>&#58;

    - Словарь допускает значения любых типов, а ключи только хешируемых типов. Например, список может быть значением, но не ключом.

    - <strong>JSON</strong>&#58; поддерживает ограниченный набор базовых типов данных, таких как строки, числа, логические значения, массивы и объекты. Например, словари в Python могут содержать кортежи, а JSON — нет.

1. <strong>Дополнительные особенности JSON</strong>&#58;

    - <strong>JSON</strong>&#58; форматизирован для легкости восприятия человеком, что делает его удобным для чтения и написания.

:::note[Ссылки для изучения]

1. [Python: JSON, строки и объекты Python](https://docs-python.ru/standart-library/modul-json-python/priemy-raboty-modulem-json/)
   :::

---

## <strong>Как отсортировать словарь по ключам, в алфавитном порядке?</strong> [#q-14bee738d69b81e49d4fc31fc94a54b5]

Для сортировки словаря по ключам в алфавитном порядке в Python можно использовать функцию <code>sorted&#40;&#41;</code> вместе с методом <code>&#46;items&#40;&#41;</code> словаря для получения списка кортежей (ключ, значение), отсортированных по ключам. Вот как это делается&#58;

```python
my_dict = {'c': 1, 'a': 2, 'b': 3}

sorted_dict = dict(sorted(my_dict.items()))

print(sorted_dict)  # Вывод: {'a': 2, 'b': 3, 'c': 1}
```

В этом примере <code>sorted&#40;my_dict&#46;items&#40;&#41;&#41;</code> возвращает отсортированный список кортежей <code>&#40;&#39;a&#39;&#44; 2&#41;</code>, <code>&#40;&#39;b&#39;&#44; 3&#41;</code>, <code>&#40;&#39;c&#39;&#44; 1&#41;</code>. Затем функция <code>dict&#40;&#41;</code> используется для преобразования отсортированного списка кортежей обратно в словарь.

:::note[Ссылки для изучения]

1. [Словари Python: порядок вставки, sorted и items](https://docs.python.org/ru/3/tutorial/datastructures.html#dictionaries)
   :::

---

## <strong>Как округлить число до трех десятичных знаков?</strong> [#q-14bee738d69b81cb8c3ddc40c8d35571]

Для округления числа до трех десятичных знаков в Python можно использовать функцию <code>round&#40;&#41;</code> с указанием количества знаков после запятой&#58;

```python
number = 3.14159265359
rounded_number = round(number, 3)
print(rounded_number)  # Вывод: 3.142
```

В этом примере <code>round&#40;number&#44; 3&#41;</code> округляет число <code>number</code> до трех десятичных знаков и возвращает результат.

:::note[Ссылки для изучения]

1. [Арифметические операции над числами в Python](https://metanit.com/python/tutorial/2.3.php)
   :::

---

## <strong>Как вернуть двоичный код целого числа?</strong> [#q-14bee738d69b81f5a38af2d4ec8ae812]

Чтобы получить двоичное представление целого числа в Python, можно использовать встроенную функцию <code>bin&#40;&#41;</code>&#58;

```python
number = 42
binary_representation = bin(number)
print(binary_representation)  # Вывод: '0b101010'
```

Функция <code>bin&#40;&#41;</code> возвращает строку, начинающуюся с префикса <code>&#39;0b&#39;</code>, за которым следует двоичное представление числа.

:::note[Ссылки для изучения]

1. [Python: двоичное представление целого с bin](https://docs.python.org/ru/3/library/functions.html#bin)
   :::

---

## <strong>Приведите пример тернарного оператора</strong> [#q-14bee738d69b813d9a55cbe1c5c3a109]

В Python тернарный оператор имеет следующий синтаксис&#58;

```python
x = <выражение1> if <условие> else <выражение2>
```

Пример использования тернарного оператора&#58;

```python
age = 25
status = "adult" if age >= 18 else "minor"
print(status)  # Вывод: "adult"
```

В этом примере, если переменная <code>age</code> больше или равна 18, то переменная <code>status</code> будет равна "adult", в противном случае будет равна "minor".

:::note[Ссылки для изучения]

1. [Тернарный условный оператор Python](https://proproprogs.ru/python_base/python3-ternarnyy-uslovnyy-operator-vlozhennoe-ternarnoe-uslovie)
   :::
