Python의 집합과 불변 집합(frozenset)은 고유한 요소를 저장하는 데 사용되는 두 가지 데이터 구조입니다. 이들은 각각 변경 가능 객체와 불변 객체이므로 속성과 사용법이 다릅니다. 이 문서에서는 Python에서 집합과 고정 집합이 구현되는 방법을 자세히 소개하고 구체적인 코드 예제를 제공합니다.
1. 집합 구현 방법:
Python에서는 해시 테이블을 사용하여 집합을 구현합니다. 해시 테이블은 해시 함수의 빠른 조회 기능을 활용하는 효율적인 데이터 구조입니다. 컬렉션의 요소는 특별한 순서가 없으며 반복될 수 없습니다.
컬렉션의 구현은 해시 테이블의 원리를 기반으로 하며, 해시 테이블의 각 요소의 해시 값을 인덱스로 저장합니다. 컬렉션에 요소를 추가하면 Python은 요소의 해시 값을 계산하고 해당 값을 인덱스로 사용하여 해당 위치에 요소를 저장합니다. 집합에 요소가 존재하는지 확인해야 할 때 Python은 해당 요소의 해시 값을 다시 계산하고 해시 테이블에서 해당 위치를 찾습니다. 해당 위치에 요소가 존재하면 해당 요소가 집합에 존재한다는 의미입니다. ; 그렇지 않으면 해당 요소가 컬렉션에 존재하지 않습니다.
다음은 컬렉션의 기본 사용법을 보여주는 간단한 샘플 코드입니다.
# 创建集合 s = set() print(s) # 输出: set() # 添加元素 s.add(1) s.add(2) s.add(3) print(s) # 输出: {1, 2, 3} # 判断元素是否存在 print(1 in s) # 输出: True print(4 in s) # 输出: False # 删除元素 s.remove(2) print(s) # 输出: {1, 3}
2. 불변 컬렉션 구현 방법(frozenset):
컬렉션과 달리 불변 컬렉션의 요소는 불변입니다. 즉, 요소를 수정할 수 없습니다. . 따라서 변경 불가능한 컬렉션은 컬렉션과 다르게 구현됩니다.
불변 컬렉션의 구현도 해시 테이블을 기반으로 하지만 해시 테이블은 생성 시 고정되어 불변 개체가 됩니다. 결과적으로 불변 컬렉션에 요소를 추가, 삭제 또는 수정할 수 없습니다.
다음은 불변 컬렉션의 기본 사용법을 보여주는 간단한 샘플 코드입니다.
# 创建不可变集合 fs = frozenset([1, 2, 3]) print(fs) # 输出: frozenset({1, 2, 3}) # 尝试添加元素(报错) fs.add(4) # 报错: AttributeError: 'frozenset' object has no attribute 'add' # 尝试删除元素(报错) fs.remove(2) # 报错: AttributeError: 'frozenset' object has no attribute 'remove' # 判断元素是否存在 print(1 in fs) # 输出: True print(4 in fs) # 输出: False
요약:
Set 및 불변 세트(frozenset)는 Python에서 고유 요소를 저장하는 데 사용되는 데이터 구조입니다. 컬렉션의 구현은 해시 테이블을 기반으로 하는 반면, 불변 컬렉션은 해시 테이블이 생성된 후 불변 객체로 고정됩니다. 위의 코드 예제를 통해 컬렉션과 불변 컬렉션의 사용법과 구현을 더 잘 이해할 수 있습니다.
위 내용은 Python에서 세트와 고정 세트는 어떻게 구현됩니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!