logo

Python에서 해시세트를 디자인하는 방법은 무엇입니까?

우리가 알고 있듯이 HashSet은 Java에서 유명한 클래스입니다. HashSet은 해시 테이블을 사용하여 값을 저장하는 데 사용됩니다. 이 튜토리얼에서는 Python의 HashSet을 다룹니다. 또한 Python에서 HashSet을 디자인하는 방법에 대해서도 알아봅니다.

HashSet은 프로그래밍의 기본 데이터 구조로, Java와 같은 언어에서 흔히 발견됩니다. 이는 Java Collections Framework에 속하며 set 인터페이스의 구현 역할을 합니다. HashSet의 독특한 특징은 특정 요소의 존재 여부를 효율적으로 확인하고 세트 내에서 고유성을 보장하는 방식으로 요소를 저장하는 기능입니다. 목록과 같은 구조와 달리 HashSet은 요소 간에 특정 순서를 유지하지 않습니다.

HashSet의 주요 특징 중 하나는 고유성을 보장한다는 것입니다. 중복된 요소는 허용되지 않습니다. 요소 추가, 제거 및 존재 여부 확인과 같은 작업은 일반적으로 일정한 시간 평균 성능을 가지므로 이러한 작업에 효율적인 선택입니다. 그러나 HashSet의 요소 순서는 보장되지 않습니다.

주요 특징:

독창성: HashSet은 중복 요소를 허용하지 않습니다. 이는 equals() 메소드를 사용하여 중복을 확인하여 세트의 모든 요소가 고유한지 확인합니다.

주문 불가: HashSet의 요소는 특정 순서로 저장되지 않습니다. 요소의 순서를 유지해야 하는 경우 삽입 순서를 유지하는 LinkedHashSet 사용을 고려할 수 있습니다.

기본 데이터 구조: 내부적으로 HashSet은 해시 테이블을 사용하여 요소를 저장합니다. 이를 통해 추가, 제거 및 포함과 같은 기본 작업에 대해 일정한 시간 평균 복잡성이 허용됩니다.

SIM 카드가 삽입되었지만 서비스가 없습니다.

널 요소: HashSet은 하나의 null 요소를 허용합니다. 중복된 null 요소를 추가하려고 하면 기존 요소가 대체됩니다.

소개

해시 테이블 라이브러리를 사용하지 않고도 HashSet을 디자인할 수 있습니다. 다음은 다양한 기능입니다.

자바의 이진 검색

추가(x) - add(x) 메소드는 주로 HashSet에 x 값을 삽입하는 데 사용됩니다.

포함(x) - Contains(x) 메소드는 HashSet에 x 값이 있는지 여부를 확인하는 데 주로 사용됩니다.

제거(x) - Remove(x) 메소드는 HashSet에서 x를 삭제하는 데 주로 사용됩니다. HashSet에 값이 없으면 아무 작업도 수행되지 않습니다.

아래 예를 통해 이러한 방법을 이해해 보겠습니다.

먼저 HashSet을 초기화하고 add(1) 함수를 호출합니다. 해시 세트에 1을 추가합니다. 3을 더하는 add(3)를 호출한 다음, contain(1)을 호출합니다. 해시 세트에 1이 존재하는지 여부를 확인합니다. 이제 우리는 contain(2), add(2), contain(2), Remove(2), contain(2)를 호출합니다.

출력은 각각 1이 존재하는 경우 true, 2가 존재하지 않는 경우 false, 2가 존재하는 경우 true, 2가 존재하지 않는 경우 false로 반환됩니다.

Python에서 HashSet의 기본 작업

다음 방법을 사용하여 HashSet에서 몇 가지 기본 작업을 수행할 수 있습니다. 이러한 방법을 이해합시다.

HashSet에 새 값 추가

아래 예에서는 add() 함수를 사용하여 해시 세트에 값을 추가합니다. add() 함수는 한 번에 하나씩 값을 추가합니다. 다음 코드를 살펴보겠습니다.

예 -

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

산출:

텍스트 래퍼 CSS
 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 

Python의 HashSet 알고리즘

첫 번째 단계에서는 HashList라는 하나의 데이터 구조를 정의합니다. 그런 다음 빈 목록을 다음과 같이 초기화합니다. new_list . 그런 다음 find가 부울 값 False를 저장하는 update() 함수를 정의합니다. 이제 각 인덱스 I와 K에 대해 for 루프를 사용합니다. 키가 'k'와 동일하면 new_list[i]=k True로 설정된 값을 찾았습니다. 값이 없으면 목록의 마지막에 값이 삽입됩니다.

다음 단계는 루프에 사용할 get() 함수를 정의하는 것입니다. k 값이 키와 동일하면 출력은 True가 됩니다. 그렇지 않으면 거짓입니다. 키가 'k'와 동일하면 목록에서 값을 삭제합니다. new_list. Remove() 함수에도 동일한 프로세스가 적용됩니다.

이제 Main 클래스 HashSet을 생성하겠습니다. 이 클래스는 key_space 값 = 2096인 초기화 함수를 선언합니다. hash_table에는 크기의 new_list 유형 개체 목록이 있습니다. 키스페이스 . 그런 다음 add() 함수를 생성합니다. hash_key = 키%key_space hash_table[hash_key]의 키를 업데이트합니다. 그 후, 우리는 전화할 것입니다 기능 제거 , 여기서 hash_key = key % key_space, hash_table[hash_key]의 키를 삭제합니다. 그 후, 우리는 전화할 것입니다 기능을 포함 , 어느

hash_key = key % key_space, hash_table[hash_key]의 키를 가져옵니다.

회문 번호

단계별 구현 알고리즘을 살펴보겠습니다.

알고리즘 -

  • HashSet이라는 데이터 구조를 생성하고 아래와 같이 초기화합니다.
  • new_list = []
  • update() 함수를 정의합니다. 이건 열쇠가 필요해
  • 발견됨 := 거짓
  • new_list의 각 인덱스 i와 키 k에 대해 다음을 수행합니다.
    • 키가 k와 같으면
      • new_list[i]:= 키
      • 발견됨:= 사실
      • 루프에서 나오다
    • 거짓으로 밝혀지면
      • new_list 끝에 키 삽입
  • get() 함수를 정의합니다. 이건 열쇠가 필요해
    • new_list의 각 k에 대해 다음을 수행하십시오.
      • k가 키와 같으면
        • True를 반환
      • 거짓을 반환
  • Remove() 함수를 정의합니다. 이건 열쇠가 필요해
    • new_list의 각 인덱스 i와 키 k에 대해 다음을 수행합니다.
      • 키가 k와 같으면
        • new_list 삭제[i]
  • 이제 사용자 정의 hashSet을 만듭니다. 다음과 같은 몇 가지 방법이 있습니다.
  • 다음과 같이 초기화하십시오 -
  • key_space := 2096
  • hash_table:= key_space 크기의 버킷 유형 객체 목록
  • add() 함수를 정의합니다. 이건 열쇠가 필요해
    • hash_key:= 키 모드 key_space
    • hash_table[hash_key]의 업데이트(키) 호출
  • Remove() 함수를 정의합니다. 이건 열쇠가 필요해
    • hash_key:= keymodkey_space
    • hash_table[hash_key]에서 키 삭제
  • 함수 contain()을 정의합니다. 이건 열쇠가 필요해
    • hash_key:= keymodkey_space
    • hash_table[hash_key]의 get(key)을 반환합니다.

Python에서 HashSet 구현

여기에서는 위의 알고리즘을 구현하고 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] 

설명:

    검증값 클래스:이 클래스는 값 요약(new_list)을 처리하고 새로 고치기, 존재 여부 확인 및 값 제거 기술을 제공합니다.__init__ 기술:각 행사에 대한 빈 요약을 소개합니다.업데이트 기술:현재 가치를 업데이트하거나 요약에 다른 가치를 추가합니다.기술을 얻으십시오 :런다운에 가치가 존재하는지 확인합니다.제거 전략:요약에서 미리 정의된 존경심을 제거합니다.HashSet 클래스:이는 HashSet의 기본 실행입니다.__init__ 기술:사전 정의된 키 공간이 있는 HashSet을 도입하고 영향을 처리하기 위한 검증값 예시의 클러스터(hash_table)를 만듭니다.hash_values ​​기술:모듈로 활동을 활용하여 특정 정보 키에 대한 해시 키를 계산합니다.전략 추가:hash_table에서 비교 verifyvalues ​​객체를 새로 고쳐 HashSet에 키를 추가합니다.제거 기술:HashSet에서 키를 제거합니다.전략 포함:HashSet에 Vital이 존재하는지 확인합니다.쇼 테크닉:무효가 아닌 각 검증값 목록의 주요 구성요소를 인쇄하여 정보 순환에 대한 설명을 제공합니다.사용 예:코드는 키(10, 6, 5)를 추가하고 존재 여부를 확인하고 내부 상태에 대한 일부 데이터를 표시하여 HashSet의 사용을 보여줍니다.