Ensembles et Tuples
Avant d'aborder les ensembles et les tuples, il est important de préciser que nous n'aborderons pas les dictionnaires ici.
Ensemble
Un ensemble offre une complexité temporelle moyenne de O(1) pour les insertions, suppressions et recherches, ce qui signifie que ces opérations sont effectuées en temps constant, quelle que soit la taille de l'ensemble. Cela rend les ensembles beaucoup plus rapides que les listes pour les tests d'appartenance et les opérations telles que l'ajout ou la suppression d'éléments, où les listes nécessitent une complexité temporelle de O(n) (le temps augmente linéairement avec la taille de la liste) dans le pire des cas.
Quand utiliser :
- Lorsque vous avez besoin d'éléments uniques, garantissant l'absence de doublons dans votre collection ;
- Lorsque des tests d'appartenance rapides sont nécessaires, ce qui rend les ensembles idéaux pour vérifier l'existence d'un élément ;
- Lorsque vous effectuez des opérations telles que unions, intersections ou différences d'ensembles, que les ensembles prennent en charge avec des méthodes optimisées ;
- Lorsque l'ordre n'a pas d'importance, car les ensembles sont intrinsèquement non ordonnés et il n'est pas nécessaire de conserver l'ordre d'insertion.
1234567891011121314151617181920# Removing duplicates from a list using a set numbers = [1, 3, 2, 3, 5, 4, 5] unique_numbers = set(numbers) print(f'Unique Numbers: {unique_numbers}') # Fast membership testing names = {'Alice', 'Bob', 'Charlie'} print(f'Is Alice in the set? {"Alice" in names}') print(f'Is Eve in the set? {"Eve" in names}') # Set operations: union, intersection, and difference set_a = {1, 4, 3, 2} set_b = {3, 5, 4, 6} print(f'Union: {set_a.union(set_b)}') print(f'Intersection: {set_a.intersection(set_b)}') print(f'Difference: {set_a.difference(set_b)}') # Removing elements from a set safely with discard names.discard('Alice') # Safe removal, no error if the element doesn't exist print(f'Names after removal: {names}')
Comparons maintenant les performances d'un ensemble et d'une liste lors d'un test d'appartenance :
12345678910111213141516171819import os os.system('wget https://staging-content-media-cdn.codefinity.com/courses/8d21890f-d960-4129-bc88-096e24211d53/section_1/chapter_3/decorators.py 2>/dev/null') from decorators import timeit_decorator # Create a large list and set with the same elements large_list = list(range(10000000)) large_set = set(large_list) # Test membership for an element at the end element_to_find = 9999999 @timeit_decorator(number=50) def test_membership(element, collection): return element in collection print('List:') print(test_membership(element_to_find, large_list)) print('Set:') print(test_membership(element_to_find, large_set))
Tuple
Les tuples sont généralement utilisés lorsque vous devez garantir que les données ne peuvent pas être modifiées ou comme clé dans un dict ou élément dans un set (car les tuples sont hachables).
-
Préférables aux listes : lorsque des données immuables sont nécessaires, que la collection doit être utilisée comme clé de dictionnaire ou élément d'ensemble, ou lorsqu'un stockage mémoire efficace est requis pour une collection d'éléments de taille fixe ;
-
Préférables aux tableaux NumPy : lorsque les données sont non numériques ou lorsque l'immuabilité est essentielle. Bien que les tableaux NumPy soient conçus pour les calculs numériques et soient mutables par défaut, les tuples offrent une sécurité pour les données non numériques ou les petites collections structurées devant rester constantes.
12345678# Each tuple in the list represents an immutable student record students = [ (1834, 'James', 'Johnson'), (2749, 'Alice', 'Smith'), (4923, 'Bob', 'Brown') ] # Attempting to modify a tuple will raise a TypeError students[0][1] = 'Fred'
Étant donné que la liste students contient des enregistrements d'étudiants (ID, prénom, nom de famille) devant rester en lecture seule, il est préférable d'utiliser des tuples pour chaque enregistrement plutôt que des listes. De plus, comme mentionné précédemment, les tuples sont légèrement plus efficaces en mémoire que les listes.
1. Lequel des scénarios suivants est le mieux adapté à l'utilisation d'un ensemble plutôt qu'une liste ?
2. Vous disposez d'un ensemble de données contenant des millions d'enregistrements et devez fréquemment vérifier si des valeurs spécifiques y existent. Quelle structure de données est la plus efficace pour cet usage ?
3. Vous créez un enregistrement pour chaque étudiant comprenant un identifiant unique, un prénom et un nom de famille. Les données ne doivent pas être modifiées une fois créées. Quelle structure de données serait la plus appropriée ?
Merci pour vos commentaires !
Demandez à l'IA
Demandez à l'IA
Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion
Awesome!
Completion rate improved to 7.69
Ensembles et Tuples
Glissez pour afficher le menu
Avant d'aborder les ensembles et les tuples, il est important de préciser que nous n'aborderons pas les dictionnaires ici.
Ensemble
Un ensemble offre une complexité temporelle moyenne de O(1) pour les insertions, suppressions et recherches, ce qui signifie que ces opérations sont effectuées en temps constant, quelle que soit la taille de l'ensemble. Cela rend les ensembles beaucoup plus rapides que les listes pour les tests d'appartenance et les opérations telles que l'ajout ou la suppression d'éléments, où les listes nécessitent une complexité temporelle de O(n) (le temps augmente linéairement avec la taille de la liste) dans le pire des cas.
Quand utiliser :
- Lorsque vous avez besoin d'éléments uniques, garantissant l'absence de doublons dans votre collection ;
- Lorsque des tests d'appartenance rapides sont nécessaires, ce qui rend les ensembles idéaux pour vérifier l'existence d'un élément ;
- Lorsque vous effectuez des opérations telles que unions, intersections ou différences d'ensembles, que les ensembles prennent en charge avec des méthodes optimisées ;
- Lorsque l'ordre n'a pas d'importance, car les ensembles sont intrinsèquement non ordonnés et il n'est pas nécessaire de conserver l'ordre d'insertion.
1234567891011121314151617181920# Removing duplicates from a list using a set numbers = [1, 3, 2, 3, 5, 4, 5] unique_numbers = set(numbers) print(f'Unique Numbers: {unique_numbers}') # Fast membership testing names = {'Alice', 'Bob', 'Charlie'} print(f'Is Alice in the set? {"Alice" in names}') print(f'Is Eve in the set? {"Eve" in names}') # Set operations: union, intersection, and difference set_a = {1, 4, 3, 2} set_b = {3, 5, 4, 6} print(f'Union: {set_a.union(set_b)}') print(f'Intersection: {set_a.intersection(set_b)}') print(f'Difference: {set_a.difference(set_b)}') # Removing elements from a set safely with discard names.discard('Alice') # Safe removal, no error if the element doesn't exist print(f'Names after removal: {names}')
Comparons maintenant les performances d'un ensemble et d'une liste lors d'un test d'appartenance :
12345678910111213141516171819import os os.system('wget https://staging-content-media-cdn.codefinity.com/courses/8d21890f-d960-4129-bc88-096e24211d53/section_1/chapter_3/decorators.py 2>/dev/null') from decorators import timeit_decorator # Create a large list and set with the same elements large_list = list(range(10000000)) large_set = set(large_list) # Test membership for an element at the end element_to_find = 9999999 @timeit_decorator(number=50) def test_membership(element, collection): return element in collection print('List:') print(test_membership(element_to_find, large_list)) print('Set:') print(test_membership(element_to_find, large_set))
Tuple
Les tuples sont généralement utilisés lorsque vous devez garantir que les données ne peuvent pas être modifiées ou comme clé dans un dict ou élément dans un set (car les tuples sont hachables).
-
Préférables aux listes : lorsque des données immuables sont nécessaires, que la collection doit être utilisée comme clé de dictionnaire ou élément d'ensemble, ou lorsqu'un stockage mémoire efficace est requis pour une collection d'éléments de taille fixe ;
-
Préférables aux tableaux NumPy : lorsque les données sont non numériques ou lorsque l'immuabilité est essentielle. Bien que les tableaux NumPy soient conçus pour les calculs numériques et soient mutables par défaut, les tuples offrent une sécurité pour les données non numériques ou les petites collections structurées devant rester constantes.
12345678# Each tuple in the list represents an immutable student record students = [ (1834, 'James', 'Johnson'), (2749, 'Alice', 'Smith'), (4923, 'Bob', 'Brown') ] # Attempting to modify a tuple will raise a TypeError students[0][1] = 'Fred'
Étant donné que la liste students contient des enregistrements d'étudiants (ID, prénom, nom de famille) devant rester en lecture seule, il est préférable d'utiliser des tuples pour chaque enregistrement plutôt que des listes. De plus, comme mentionné précédemment, les tuples sont légèrement plus efficaces en mémoire que les listes.
1. Lequel des scénarios suivants est le mieux adapté à l'utilisation d'un ensemble plutôt qu'une liste ?
2. Vous disposez d'un ensemble de données contenant des millions d'enregistrements et devez fréquemment vérifier si des valeurs spécifiques y existent. Quelle structure de données est la plus efficace pour cet usage ?
3. Vous créez un enregistrement pour chaque étudiant comprenant un identifiant unique, un prénom et un nom de famille. Les données ne doivent pas être modifiées une fois créées. Quelle structure de données serait la plus appropriée ?
Merci pour vos commentaires !