Sets en Tuples
Voordat we verdergaan met sets en tuples, is het belangrijk te vermelden dat we woordenboeken hier niet zullen bespreken.
Set
Een set biedt een gemiddelde O(1) tijdcomplexiteit voor invoegen, verwijderen en opzoeken, wat betekent dat deze bewerkingen in constante tijd worden uitgevoerd, ongeacht de grootte van de set. Dit maakt sets veel sneller dan lijsten voor lidmaatschapstests en bewerkingen zoals het toevoegen of verwijderen van elementen, waarbij lijsten O(n) tijdcomplexiteit vereisen (de tijd neemt lineair toe met de grootte van de lijst) in het slechtste geval.
Wanneer te gebruiken:
- Nodig voor unieke elementen, zodat er geen duplicaten in de verzameling voorkomen;
- Snelle lidmaatschapstest vereist, waardoor sets ideaal zijn voor taken zoals het controleren op het bestaan van een item;
- Uitvoeren van bewerkingen zoals set-unies, doorsneden of verschillen, die sets ondersteunen met geoptimaliseerde methoden;
- Volgorde is niet van belang, aangezien sets inherent ongeordend zijn en het niet nodig is om de invoegvolgorde te behouden.
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}')
Laten we nu de prestaties van een set vergelijken met een lijst bij het testen van lidmaatschap:
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
Tuples worden doorgaans gebruikt wanneer het noodzakelijk is dat de gegevens niet gewijzigd kunnen worden of als sleutel in een dict of element in een set (omdat tuples hashable zijn).
-
Beter dan lijsten: wanneer onveranderlijke gegevens vereist zijn, wanneer de collectie als dictionary-sleutel of set-element gebruikt moet worden, of wanneer geheugenefficiënte opslag voor een collectie van vaste grootte nodig is;
-
Beter dan NumPy-arrays: wanneer de gegevens niet-numeriek zijn of wanneer onveranderlijkheid essentieel is. Hoewel NumPy-arrays ontworpen zijn voor numerieke berekeningen en standaard veranderlijk zijn, bieden tuples veiligheid voor niet-numerieke gegevens of kleine, gestructureerde collecties die constant moeten blijven.
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'
Aangezien de students-lijst studentenrecords bevat (ID, voornaam, achternaam) die alleen-lezen moeten zijn, is het beter om tuples te gebruiken voor elk record in plaats van lijsten. Daarnaast zijn tuples, zoals hierboven vermeld, iets geheugenefficiënter dan lijsten.
1. Welke van de volgende scenario's is het meest geschikt om een set te gebruiken in plaats van een lijst?
2. Je hebt een dataset met miljoenen records en moet vaak controleren of specifieke waarden erin voorkomen. Welke datastructuur is hiervoor het meest efficiënt?
3. U maakt een record voor elke student dat een uniek ID, voornaam en achternaam bevat. De gegevens mogen na aanmaak niet worden gewijzigd. Welke datastructuur is het meest geschikt?
Bedankt voor je feedback!
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.
Can you explain more about when to use sets versus lists?
What are some common use cases for tuples?
Can you show more examples of set operations?
Awesome!
Completion rate improved to 7.69
Sets en Tuples
Veeg om het menu te tonen
Voordat we verdergaan met sets en tuples, is het belangrijk te vermelden dat we woordenboeken hier niet zullen bespreken.
Set
Een set biedt een gemiddelde O(1) tijdcomplexiteit voor invoegen, verwijderen en opzoeken, wat betekent dat deze bewerkingen in constante tijd worden uitgevoerd, ongeacht de grootte van de set. Dit maakt sets veel sneller dan lijsten voor lidmaatschapstests en bewerkingen zoals het toevoegen of verwijderen van elementen, waarbij lijsten O(n) tijdcomplexiteit vereisen (de tijd neemt lineair toe met de grootte van de lijst) in het slechtste geval.
Wanneer te gebruiken:
- Nodig voor unieke elementen, zodat er geen duplicaten in de verzameling voorkomen;
- Snelle lidmaatschapstest vereist, waardoor sets ideaal zijn voor taken zoals het controleren op het bestaan van een item;
- Uitvoeren van bewerkingen zoals set-unies, doorsneden of verschillen, die sets ondersteunen met geoptimaliseerde methoden;
- Volgorde is niet van belang, aangezien sets inherent ongeordend zijn en het niet nodig is om de invoegvolgorde te behouden.
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}')
Laten we nu de prestaties van een set vergelijken met een lijst bij het testen van lidmaatschap:
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
Tuples worden doorgaans gebruikt wanneer het noodzakelijk is dat de gegevens niet gewijzigd kunnen worden of als sleutel in een dict of element in een set (omdat tuples hashable zijn).
-
Beter dan lijsten: wanneer onveranderlijke gegevens vereist zijn, wanneer de collectie als dictionary-sleutel of set-element gebruikt moet worden, of wanneer geheugenefficiënte opslag voor een collectie van vaste grootte nodig is;
-
Beter dan NumPy-arrays: wanneer de gegevens niet-numeriek zijn of wanneer onveranderlijkheid essentieel is. Hoewel NumPy-arrays ontworpen zijn voor numerieke berekeningen en standaard veranderlijk zijn, bieden tuples veiligheid voor niet-numerieke gegevens of kleine, gestructureerde collecties die constant moeten blijven.
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'
Aangezien de students-lijst studentenrecords bevat (ID, voornaam, achternaam) die alleen-lezen moeten zijn, is het beter om tuples te gebruiken voor elk record in plaats van lijsten. Daarnaast zijn tuples, zoals hierboven vermeld, iets geheugenefficiënter dan lijsten.
1. Welke van de volgende scenario's is het meest geschikt om een set te gebruiken in plaats van een lijst?
2. Je hebt een dataset met miljoenen records en moet vaak controleren of specifieke waarden erin voorkomen. Welke datastructuur is hiervoor het meest efficiënt?
3. U maakt een record voor elke student dat een uniek ID, voornaam en achternaam bevat. De gegevens mogen na aanmaak niet worden gewijzigd. Welke datastructuur is het meest geschikt?
Bedankt voor je feedback!