Maison  >  Article  >  développement back-end  >  Comment les sets et Frozenset sont-ils implémentés en Python ?

Comment les sets et Frozenset sont-ils implémentés en Python ?

WBOY
WBOYoriginal
2023-10-20 14:16:50643parcourir

Comment les sets et Frozenset sont-ils implémentés en Python ?

Les ensembles et les ensembles immuables (frozenset) en Python sont deux structures de données utilisées pour stocker des éléments uniques. Ce sont respectivement des objets mutables et immuables, ils ont donc des propriétés et des usages différents. Cet article présentera en détail comment les collections et Frozenset sont implémentées en Python et fournira des exemples de code spécifiques.

1. Comment implémenter un ensemble :
En Python, un ensemble est implémenté à l'aide d'une table de hachage. Une table de hachage est une structure de données efficace qui tire parti des capacités de recherche rapide des fonctions de hachage. Les éléments de la collection ne sont pas classés dans un ordre particulier et ne peuvent être répétés.

La mise en œuvre des collections est basée sur le principe des tables de hachage, en stockant la valeur de hachage de chaque élément de la table de hachage sous forme d'index. Lorsque nous ajoutons un élément à la collection, Python calcule la valeur de hachage de l'élément et utilise cette valeur comme index pour stocker l'élément à l'emplacement correspondant. Lorsque nous devons déterminer si un élément existe dans l'ensemble, Python calculera à nouveau la valeur de hachage de l'élément et trouvera la position correspondante dans la table de hachage. Si un élément existe à cette position, cela signifie que l'élément existe dans l'ensemble. ; sinon, l'élément n'existe pas dans la collection.

Ce qui suit est un exemple de code simple qui démontre l'utilisation de base des collections :

# 创建集合
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. Comment implémenter des collections immuables (frozenset) :
Contrairement aux collections, les éléments des collections immuables sont immuables, c'est-à-dire que les éléments ne peuvent pas être modifiés. . Par conséquent, les collections immuables sont implémentées différemment des collections.

L'implémentation de collections immuables repose également sur des tables de hachage, mais les tables de hachage sont figées lors de leur création, ce qui en fait des objets immuables. De cette façon, nous ne pouvons pas ajouter, supprimer ou modifier des éléments à la collection immuable.

Ce qui suit est un exemple de code simple qui démontre l'utilisation de base des collections immuables :

# 创建不可变集合
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

Résumé :
Set et immuable set (frozenset) sont des structures de données utilisées pour stocker des éléments uniques en Python. L'implémentation des collections est basée sur des tables de hachage, tandis que les collections immuables sont figées dans des objets immuables après la création de la table de hachage. Grâce aux exemples de code ci-dessus, nous pouvons mieux comprendre l'utilisation et la mise en œuvre des collections et des collections immuables.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn