logo

Как да проектирам Hashset в Python?

Както знаем, че HashSet е известен клас в Java. HashSet се използва за съхраняване на стойностите с помощта на хеш таблица. В този урок ще разгледаме HashSet в Python. Ще научим също как можем да проектираме HashSet в Python.

HashSet е основна структура от данни в програмирането, често срещана в езици като Java. Той принадлежи към Java Collections Framework и служи като реализация на зададения интерфейс. Отличителната черта на HashSet е способността му да съхранява елементи по начин, който улеснява ефективната проверка за съществуването на конкретни елементи и гарантира уникалност в рамките на набора. За разлика от структури като списъци, HashSet не поддържа никакъв конкретен ред сред своите елементи.

Една ключова характеристика на HashSet е неговата гаранция за уникалност; не позволява дублиращи се елементи. Операции като добавяне, премахване и проверка за наличие на елементи обикновено имат средна производителност за постоянно време, което го прави ефективен избор за такива задачи. Въпреки това е важно да се отбележи, че редът на елементите в HashSet не е гарантиран.

низ подниз java

Основни характеристики:

Уникалност: HashSet не позволява дублиращи се елементи. Той използва метода equals() за проверка за дубликати, като гарантира, че всеки елемент в набора е уникален.

Без ред: Елементите в HashSet не се съхраняват в определен ред. Ако трябва да поддържате реда на елементите, можете да обмислите използването на LinkedHashSet, който поддържа реда на вмъкване.

Основна структура на данните: Вътрешно, HashSet използва хеш таблица за съхраняване на елементи. Това позволява средна сложност за постоянно време за основни операции като добавяне, премахване и съдържа.

Нулеви елементи: HashSet позволява един нулев елемент. Ако се опитате да добавите дублиран нулев елемент, той ще замени съществуващия.

Въведение

Можем да проектираме HashSet без да използваме библиотеки с хеш таблици. По-долу са множеството различни функции -

добави (x) - Методът add(x) се използва главно за вмъкване на стойност x в HashSet.

съдържа (x) - Методът съдържа(x) се използва главно за проверка дали дадена стойност x присъства в HashSet или не.

премахване (x) - Методът remove(x) се използва главно за изтриване на x от HashSet. Ако HashSet няма никаква стойност, той няма да направи нищо.

Нека разберем тези методи чрез примера по-долу.

Първо инициализирайте HashSet и извикайте функцията add(1). Той ще добави 1 към хеш набора. Извикайте add(3), което ще добави 3, след което извикайте contains(1). Той ще провери дали 1 присъства или не в хеш набора. Сега извикваме съдържа (2), добавя (2), съдържа (2), премахва (2), съдържа (2).

Изходът ще бъде върнат като true за 1 присъства, false за 2 не присъства, true за 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(). Нека разберем следния код.

пример -

numpy точков продукт
 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_space и вземете ключа на hash_table[hash_key].

шаблони за проектиране java

Нека видим алгоритъма за поетапно внедряване.

алгоритъм -

  • Създайте структура от данни, наречена 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:= key mod key_space
    • извикване update(key) на hash_table[hash_key]
  • Дефинирайте функция remove(). Това ще вземе ключ
    • hash_key:= keymodkey_space
    • изтриване на ключ от hash_table[hash_key]
  • Дефинирайте функция съдържа(). Това ще вземе ключ
    • 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 с предварително дефинирано ключово пространство и прави клъстер (hash_table) от примери за verifyvalues ​​за справяне с въздействията.техника на хеш_стойности:Разработва хеш ключа за даден информационен ключ, като използва модулната дейност.добавете стратегия:Добавя ключ към HashSet чрез опресняване на сравняващия обект verifyvalues ​​в hash_table.премахване на техниката:Елиминира ключ от HashSet.съдържа стратегия:Проверява дали съществува витал в HashSet.покажи техника:Отпечатва основния компонент на всеки невалиден списък verifyvalues, като предлага изображение на циркулацията на информацията.Пример за употреба:Кодът показва използването на HashSet чрез добавяне на ключове (10, 6, 5), проверка за присъствие и показване на някои данни за вътрешното състояние.