Как проверить, содержит ли кортеж дубликаты в Python

PythonPythonBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом практическом занятии (лабораторной работе) вы научитесь проверять наличие дубликатов в кортежах (tuples) Python. В рамках практики рассматриваются два основных метода: сравнение длины кортежа с длиной его представления в виде множества (set) и использование объекта collections.Counter.

Первый шаг заключается в том, чтобы понять, как кортежи обрабатывают дубликаты элементов, создав кортеж с дубликатами и обратившись к ним с использованием индексации. Это показывает, что кортежи сохраняют порядок и частоту элементов, включая дубликаты. Второй шаг, который здесь сокращен, вероятно, будет включать сравнение len() кортежа с len() его представления в виде множества (set) для определения наличия дубликатов.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/DataStructuresGroup(["Data Structures"]) python(("Python")) -.-> python/FunctionsGroup(["Functions"]) python(("Python")) -.-> python/PythonStandardLibraryGroup(["Python Standard Library"]) python(("Python")) -.-> python/DataScienceandMachineLearningGroup(["Data Science and Machine Learning"]) python/DataStructuresGroup -.-> python/tuples("Tuples") python/DataStructuresGroup -.-> python/sets("Sets") python/FunctionsGroup -.-> python/build_in_functions("Build-in Functions") python/PythonStandardLibraryGroup -.-> python/data_collections("Data Collections") python/DataScienceandMachineLearningGroup -.-> python/data_analysis("Data Analysis") subgraph Lab Skills python/tuples -.-> lab-559588{{"Как проверить, содержит ли кортеж дубликаты в Python"}} python/sets -.-> lab-559588{{"Как проверить, содержит ли кортеж дубликаты в Python"}} python/build_in_functions -.-> lab-559588{{"Как проверить, содержит ли кортеж дубликаты в Python"}} python/data_collections -.-> lab-559588{{"Как проверить, содержит ли кортеж дубликаты в Python"}} python/data_analysis -.-> lab-559588{{"Как проверить, содержит ли кортеж дубликаты в Python"}} end

Понимание дубликатов в кортежах

На этом этапе мы рассмотрим, как кортежи (tuples) обрабатывают дубликаты элементов. Кортежи, как и списки (lists), могут содержать несколько экземпляров одного и того же значения. Понимание того, как дубликаты хранятся и доступны в кортежах, является важным аспектом анализа и манипуляции данными.

Начнем с создания кортежа с дубликатами элементов:

my_tuple = (1, 2, 2, 3, 4, 4, 4, 5)
print(my_tuple)

Создайте файл с именем duplicates.py в директории ~/project с помощью редактора VS Code. Скопируйте и вставьте приведенный выше код в файл.

Теперь выполните скрипт Python с помощью следующей команды в терминале:

python duplicates.py

Вы должны увидеть следующий вывод:

(1, 2, 2, 3, 4, 4, 4, 5)

Как вы можете видеть, кортеж my_tuple содержит дубликаты значений (2 и 4). Кортежи сохраняют порядок и частоту элементов, включая дубликаты.

Теперь давайте обратимся к дубликатным элементам с использованием индексации:

my_tuple = (1, 2, 2, 3, 4, 4, 4, 5)
print(my_tuple[1])
print(my_tuple[2])
print(my_tuple[4])
print(my_tuple[5])
print(my_tuple[6])

Добавьте эти строки в файл duplicates.py. Теперь полный файл должен выглядеть следующим образом:

my_tuple = (1, 2, 2, 3, 4, 4, 4, 5)
print(my_tuple)
print(my_tuple[1])
print(my_tuple[2])
print(my_tuple[4])
print(my_tuple[5])
print(my_tuple[6])

Выполните скрипт еще раз:

python duplicates.py

Вывод будет следующим:

(1, 2, 2, 3, 4, 4, 4, 5)
2
2
4
4
4

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

Кортежи допускают дубликаты, сохраняя порядок, в котором элементы были изначально добавлены. Это отличается от множеств (sets), которые не допускают дубликатов. На следующем этапе мы сравним длину кортежа с длиной его представления в виде множества (set), чтобы понять, как дубликаты влияют на размер.

Сравнение len() и len(set())

На этом этапе мы сравним результат применения функции len() к кортежу (tuple) и результат применения той же функции к представлению этого кортежа в виде множества (set). Это позволит увидеть, как кортежи и множества обрабатывают дубликаты по - разному.

Сначала вспомним, что кортежи допускают дубликаты элементов, в то время как множества (sets) - нет. Множество содержит только уникальные элементы. Поэтому, когда мы преобразуем кортеж в множество, дубликаты элементов удаляются.

Мы будем использовать тот же кортеж my_tuple, который был создан на предыдущем этапе:

my_tuple = (1, 2, 2, 3, 4, 4, 4, 5)
print("Tuple:", my_tuple)
print("Length of tuple:", len(my_tuple))

my_set = set(my_tuple)
print("Set:", my_set)
print("Length of set:", len(my_set))

Добавьте эти строки в файл duplicates.py. Теперь полный файл должен выглядеть так:

my_tuple = (1, 2, 2, 3, 4, 4, 4, 5)
print("Tuple:", my_tuple)
print("Length of tuple:", len(my_tuple))

my_set = set(my_tuple)
print("Set:", my_set)
print("Length of set:", len(my_set))

Выполните скрипт:

python duplicates.py

Вывод будет следующим:

Tuple: (1, 2, 2, 3, 4, 4, 4, 5)
Length of tuple: 8
Set: {1, 2, 3, 4, 5}
Length of set: 5

Как вы можете видеть, длина кортежа равна 8, так как он содержит 8 элементов, включая дубликаты. Однако длина множества равна 5, так как оно содержит только уникальные элементы из кортежа.

Это сравнение показывает, что len(tuple) подсчитывает все элементы, включая дубликаты, в то время как len(set(tuple)) подсчитывает только уникальные элементы. Это различие важно, когда вам нужно проанализировать частоту элементов в наборе данных.

На следующем этапе мы будем использовать объект collections.Counter для подсчета количества вхождений каждого элемента в кортеж.

Использование collections.Counter для кортежей

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

Сначала вам нужно импортировать класс Counter из модуля collections. Затем вы можете создать объект Counter на основе вашего кортежа.

Давайте используем тот же кортеж my_tuple, который мы использовали на предыдущих этапах:

from collections import Counter

my_tuple = (1, 2, 2, 3, 4, 4, 4, 5)
print("Tuple:", my_tuple)

element_counts = Counter(my_tuple)
print("Element counts:", element_counts)

Добавьте эти строки в файл duplicates.py. Теперь полный файл должен выглядеть так:

from collections import Counter

my_tuple = (1, 2, 2, 3, 4, 4, 4, 5)
print("Tuple:", my_tuple)

element_counts = Counter(my_tuple)
print("Element counts:", element_counts)

Выполните скрипт:

python duplicates.py

Вывод будет следующим:

Tuple: (1, 2, 2, 3, 4, 4, 4, 5)
Element counts: Counter({4: 3, 2: 2, 1: 1, 3: 1, 5: 1})

Объект Counter с именем element_counts теперь хранит количество вхождений каждого элемента в кортеже. Например, 4: 3 означает, что число 4 встречается 3 раза в кортеже.

Вы можете получить количество вхождений определенного элемента, используя следующий синтаксис:

from collections import Counter

my_tuple = (1, 2, 2, 3, 4, 4, 4, 5)
element_counts = Counter(my_tuple)

print("Count of 2:", element_counts[2])
print("Count of 4:", element_counts[4])

Добавьте эти строки в файл duplicates.py. Теперь полный файл должен выглядеть так:

from collections import Counter

my_tuple = (1, 2, 2, 3, 4, 4, 4, 5)
print("Tuple:", my_tuple)

element_counts = Counter(my_tuple)
print("Element counts:", element_counts)

print("Count of 2:", element_counts[2])
print("Count of 4:", element_counts[4])

Выполните скрипт еще раз:

python duplicates.py

Вывод будет следующим:

Tuple: (1, 2, 2, 3, 4, 4, 4, 5)
Element counts: Counter({4: 3, 2: 2, 1: 1, 3: 1, 5: 1})
Count of 2: 2
Count of 4: 3

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

Резюме

В этом практическом занятии (lab) мы начали с исследования того, как кортежи обрабатывают дубликаты элементов. Было показано, что в отличие от множеств (sets), кортежи могут содержать несколько экземпляров одного и того же значения, сохраняя при этом их порядок и частоту. Мы создали кортеж с дублирующимися значениями и обратились к этим дубликатам с помощью индексации, убедившись, что каждый дублирующийся элемент можно получить отдельно.

Следующим этапом будет сравнение длины кортежа с длиной его представления в виде множества, чтобы понять, как дубликаты влияют на размер. Однако этот этап не был завершен в предоставленном контенте.