logo

Як створити хеш-сет на Python?

Як ми знаємо, HashSet є відомим класом у Java. HashSet використовується для зберігання значень за допомогою хеш-таблиці. У цьому підручнику ми розглянемо HashSet у Python. Ми також дізнаємося, як ми можемо створити HashSet на Python.

HashSet — це фундаментальна структура даних у програмуванні, яка зазвичай зустрічається в таких мовах, як Java. Він належить до Java Collections Framework і служить реалізацією встановленого інтерфейсу. Відмінною рисою HashSet є його здатність зберігати елементи таким чином, щоб полегшити ефективну перевірку існування певних елементів і гарантувати унікальність у наборі. На відміну від таких структур, як списки, HashSet не підтримує жодного певного порядку серед своїх елементів.

Однією з ключових характеристик HashSet є його гарантія унікальності; він не допускає повторюваних елементів. Такі операції, як додавання, видалення та перевірка на наявність елементів, зазвичай мають середню продуктивність у постійному часі, що робить їх ефективним вибором для таких завдань. Однак важливо зазначити, що порядок елементів у HashSet не гарантується.

Ключові характеристики:

Унікальність: HashSet не допускає повторюваних елементів. Він використовує метод equals() для перевірки дублікатів, гарантуючи, що кожен елемент у наборі є унікальним.

Без замовлення: Елементи в HashSet не зберігаються в певному порядку. Якщо вам потрібно підтримувати порядок елементів, ви можете розглянути можливість використання LinkedHashSet, який підтримує порядок вставки.

Основна структура даних: Всередині HashSet використовує хеш-таблицю для зберігання елементів. Це забезпечує постійну середню складність для основних операцій, таких як додавання, видалення та вміст.

Нульові елементи: HashSet допускає один нульовий елемент. Якщо ви спробуєте додати повторюваний нульовий елемент, він замінить існуючий.

вступ

Ми можемо створити HashSet без використання бібліотек хеш-таблиць. Нижче наведено кілька різних функцій -

пуста java

додати (x) - Метод add(x) в основному використовується для вставки значення x у HashSet.

містить (x) - Метод contains(x) в основному використовується для перевірки наявності значення x у HashSet чи ні.

видалити (x) - Метод remove(x) в основному використовується для видалення x із HashSet. Якщо HashSet не має значення, він нічого не робитиме.

Давайте розберемо ці методи на прикладі нижче.

Спочатку ініціалізуйте HashSet і викличте функцію add(1). Це додасть 1 до хеш-набору. Викличте add(3), який додасть 3, потім викличте contains(1). Він перевірить, чи присутній 1 у наборі хешів. Тепер ми викликаємо contains(2), add(2), contains(2), remove(2), contains(2).

Вихід буде повернуто як істинне для 1 присутній, false для 2 відсутній, істинний для 2 присутній, false для 2 відсутній, відповідно.

алфавіт і цифри

Основні операції HashSet у Python

Ми можемо виконувати деякі основні операції в HashSet за допомогою наступних методів. Давайте розберемося в цих методах.

Додавання нових значень у HashSet

У наведеному нижче прикладі ми додамо значення в хеш-набір за допомогою функції add(). Функція add() додає значення по одному. Давайте подивимося на наступний код.

приклад -

 from hs import HashSet obj = HashSet() obj.add(2) obj.add(7) obj.add(6) 

Вихід:

 Adding value: 2 Adding value: 7 Adding value: 6 

Видалення значень у HashSet

Ми можемо видалити існуюче значення за допомогою функції remove(). Давайте розберемося з наступним кодом.

приклад -

 from hs import HashSet obj = HashSet() obj.add(2) obj.add(7) obj.add(6) obj.remove(7) obj.remove(6) 

Вихід:

 Adding value: 2 Adding value: 7 Adding value: 6 Removed value: 7 Removed value: 6 

Перевірка наявності значень у HashSet

У цьому прикладі ми продемонструємо, як ми можемо перевірити, чи існує певне значення чи не використовує містить() функція. Давайте розберемося з наступним кодом.

приклад -

 from hs import HashSet obj = HashSet() obj.add(2) obj.add(7) obj.add(6) obj.contains(2) 

Вихід:

 Adding value: 2 Adding value: 7 Adding value: 6 It contains: 2 

Алгоритм для HashSet в Python

На першому кроці ми визначаємо одну структуру даних під назвою HashList. Потім ми ініціалізуємо порожній список як новий_список . Потім ми визначаємо функцію update(), у якій found буде зберігати логічне значення False. Тепер ми використовуємо цикл for для кожного індексу I та K. Якщо ключ збігається з «k», то новий_список[i]=k і знайдене значення має значення True. Значення буде вставлено в останню частину списку, якщо значення не знайдено.

Наступним кроком є ​​визначення функції get(), яку ми будемо використовувати для циклу, і якщо значення k збігається з ключем, результат буде True; інакше, False. Якщо ключ збігається з «k», видаліть значення зі списку новий_список. Той самий процес буде застосовано у функції remove().

Тепер ми створимо основний клас HashSet. Цей клас оголошуватиме функцію ініціалізації, де значення key_space = 2096. Таблиця hash_table матиме список об’єктів типу new_list розміром key_space . Потім ми створимо функцію add(), у якій hash_key = key%key_space і оновіть ключ hash_table[hash_key]. Після цього ми зателефонуємо видалити функцію , у якому hash_key = ключ % key_space, і видалити ключ hash_table[hash_key]. Після цього ми зателефонуємо містить функцію , в якому

hash_key = key % key_space і отримати ключ hash_table[hash_key].

Розглянемо покроковий алгоритм реалізації.

Алгоритм -

  • Створіть структуру даних під назвою HashSet, ініціалізуйте її, як показано нижче
  • новий_список = []
  • Визначте функцію update(). Це займе ключ
  • знайдено := Неправда
  • для кожного індексу i та ключа k у new_list виконайте
    • якщо ключ такий самий, як k, тоді
      • new_list[i]:= ключ
      • знайдено:= Правда
      • вийти з петлі
    • якщо виявлено неправду, то
      • вставте ключ у кінець new_list
  • Визначте функцію get(). Це займе ключ
    • для кожного k у new_list виконайте
      • якщо k таке ж, як ключ, тоді
        • повертає True
      • повернути False
  • Визначте функцію remove(). Це займе ключ
    • для кожного індексу i та ключа k у new_list виконайте
      • якщо ключ такий самий, як k, тоді
        • видалити новий_список[i]
  • Тепер створіть спеціальний hashSet. Наведених нижче методів буде кілька
  • Ініціалізуйте це наступним чином -
  • key_space := 2096
  • hash_table:= список об’єктів типу ковша розміром key_space
  • Визначте функцію add(). Це займе ключ
    • hash_key:= ключ mod key_space
    • виклик update(key) hash_table[hash_key]
  • Визначте функцію remove(). Це займе ключ
    • hash_key:= keymodkey_space
    • видалити ключ із хеш-таблиці [хеш-ключ]
  • Визначте функцію contains(). Це займе ключ
    • hash_key:= keymodkey_space
    • повернути get(key) з hash_table[hash_key]

Реалізація HashSet в Python

Тут ми реалізуємо наведений вище алгоритм і створимо програму Python. Ми визначимо два класи: HashSet і CreateHashset. Давайте подивимось наведений нижче код.

Код -

вимкнення режиму розробника
 # Here, we are Designing the HashSet in python # Here, we are checking the values and will return the output class class verifyvalues: # Here, we are initialization function which has list new_list def __init__(self): self.new_list=[] # Here, we have the function to update values def update(self, key): found=False for i,k in enumerate(self.new_list): if key==k: self.new_list[i]=key found=True break if not found: self.new_list.append(key) # Here, we have function to get values def get(self, key): for k in self.new_list: if k==key: return True return False # Here, we have function to remove values def remove(self, key): for i,k in enumerate(self.new_list): if key==k: del self.new_list[i] # Here, we have defined a class as HashSet class HashSet: # Here, we have defined an Initialization function def __init__(self): self.key_space = 2096 self.hash_table=[verifyvalues() for i in range(self.key_space)] def hash_values(self, key): hash_key=key%self.key_space return hash_key # Here, we have also defined an add function def add(self, key): self.hash_table[self.hash_values(key)].update(key) # Here, we have also defined a remove function def remove(self, key): self.hash_table[self.hash_values(key)].remove(key) # Here, we have defined the contains function def contains(self, key): return self.hash_table[self.hash_values(key)].get(key) def display(self): ls=[] for i in self.hash_table: if len(i.new_list)!=0:ls.append(i.new_list[0]) print(ls) ob = HashSet() print(ob.hash_values(10)) print('Add 10') ob.add(10) print(ob.hash_values(6)) print('Add 6 ') ob.add(6) print(ob.hash_values(5)) print('Add 5 ') ob.add(5) print('Contains 10 : ',ob.contains(10)) print('Contains 3: ',ob.contains(3)) print('Contains 8 : ',ob.contains(9)) 

Вихід:

 10 Add 10 6 Add 6 5 Add 5 Contains 10 : True Contains 3: False Contains 8 : False 2 Add 2 3 Add 3 Contains 2 : True Remove 2 Contains 2 : False Contains 3 : True [3, 5, 6, 10] 

Пояснення:

    клас verifyvalues:Цей клас працює з переліком значень (new_list) і надає методи оновлення, перевірки наявності та видалення значень.техніка __init__:Представляє вакантний список для кожного випадку.техніка оновлення:Оновлює поточне значення або додає інше значення до списку.отримати техніку:Перевіряє, якщо в переліку є значення.усунути стратегію:Виключає попередньо визначену оцінку зі списку.Клас HashSet:Це основне виконання HashSet.техніка __init__:Представляє HashSet із попередньо визначеним простором ключів і створює кластер (хеш-таблицю) прикладів verifyvalues ​​для контролю впливів.техніка hash_values:Розробляє хеш-ключ для заданого інформаційного ключа, використовуючи дію модуля.додати стратегію:Додає ключ до HashSet, оновлюючи порівняльний об’єкт verifyvalues ​​у hash_table.усунути техніку:Вилучає ключ із HashSet.містить стратегію:Перевіряє, чи існує життєвий елемент у HashSet.показати техніку:Друкує головний компонент кожного списку недійсних перевіряючих значень, пропонуючи зображення циркуляції інформації.Приклад використання:Код показує використання HashSet шляхом додавання ключів (10, 6, 5), перевірки наявності та показу деяких даних про внутрішній стан.