Collecties in Python: alles wat u moet weten over Python-collecties



Deze blog behandelt de ingebouwde datatypen voor verzamelingen in python, samen met de verzamelingsmodule met alle gespecialiseerde gegevensstructuren voor verzamelingen.

Python-programmeertaal heeft vier soorten verzamelingsgegevens: lijst , tuple, sets en . Maar wordt ook geleverd met een ingebouwde module die bekend staat als collecties met gespecialiseerde datastructuren die in feite de tekortkomingen van de vier datatypes afdekt. In deze blog zullen we elk van die gespecialiseerde datastructuren in detail bespreken. Hieronder volgen de onderwerpen die in deze blog worden gehuld:

Wat zijn verzamelingen in Python?

Verzamelingen in python zijn in feite containergegevens, namelijk lijsten, sets, tuples en woordenboek. Ze hebben verschillende kenmerken op basis van de aangifte en het gebruik.





  • Een lijst wordt tussen vierkante haken gedeclareerd, is veranderlijk, slaat dubbele waarden op en elementen zijn toegankelijk via indexen.

  • Een tuple is geordend en onveranderlijk van aard, hoewel er dubbele vermeldingen in een tuple kunnen voorkomen.



    thread synchronisatie in java-voorbeeld
  • Een set is ongeordend en staat tussen vierkante haken. Het is niet geïndexeerd en heeft ook geen dubbele vermeldingen.

  • Een woordenboek heeft sleutelwaardeparen en is veranderlijk van aard. We gebruiken vierkante haken om een ​​woordenboek aan te geven.

Dit zijn de algemene ingebouwde containergegevenstypen van de python. Maar zoals we allemaal weten, heeft python altijd iets extra's te bieden. Het wordt geleverd met een python-module met de naam collecties met gespecialiseerde datastructuren.



Gespecialiseerde gegevensstructuren voor verzameling

Collecties module in python implementeert gespecialiseerde datastructuren die een alternatief bieden voor de ingebouwde containergegevens van Python. Hieronder volgen de gespecialiseerde datastructuren in de verzamelingsmodule.

  1. namedtuple ()
  2. en
  3. Chainmap
  4. Teller
  5. OrderedDict
  6. defaultdict
  7. UserDict
  8. Gebruikers lijst
  9. UserString

namedtuple ()

Het retourneert een tupel met een genoemd item, wat betekent dat er een naam wordt toegewezen aan elke waarde in het tupel. Het lost het probleem op van toegang tot de elementen met behulp van de indexwaarden. Met namedtuple () wordt het gemakkelijker om toegang te krijgen tot deze waarden, aangezien u de indexwaarden niet hoeft te onthouden om specifieke elementen te krijgen.

Hoe het werkt?

Allereerst moet u de verzamelingsmodule importeren, het vereist geen installatie.

uit collectiesimport namedtuple

Bekijk de volgende code om te begrijpen hoe u namedtuple kunt gebruiken.

a = namedtuple ('courses', 'name, tech') s = a ('data science', 'python') print (s) # de output zal cursussen zijn (name = 'python', tech = 'python')

Hoe maak je een namedtuple aan met een lijst?

s._make (['data science', 'python']) #de output zal hetzelfde zijn als voorheen.

en

deque uitgesproken als ‘deck’ is een geoptimaliseerde lijst om het invoegen en verwijderen gemakkelijk uit te voeren.

Hoe het werkt?

# een deque maken uit verzamelingen import deque a = ['d', 'u', 'r', 'e', ​​'k'] a1 = deque (a) print (a1) #de uitvoer zal deque ([' d ',' u ',' r ',' e ',' k '])

Laten we nu eens kijken hoe we items uit deque zullen invoegen en verwijderen.

a1.append ('a') print (a1) # de uitvoer is deque (['d', 'u', 'r', 'e', ​​'k', 'a']) a1.appendleft (' e ') print (a1) # de uitvoer zal deque zijn ([' e ',' d ',' u ',' r ',' e ',' k ',' a '])

Zoals duidelijk zou moeten zijn, wordt het invoegen van een component verbeterd met behulp van deque, ook kunt u componenten verwijderen.

a1.pop () print (a1) # de uitvoer is deque (['e', 'd', 'u', 'r', 'e', ​​'k']) a1.popleft () print (a1 ) # de uitvoer is deque (['d', 'u', 'r', 'e', ​​'k'])

Net als bij de ingebouwde gegevenstypen, zijn er verschillende andere bewerkingen die we op een deque kunnen uitvoeren. Zoals het tellen van elementen of het leegmaken van de kaart etc.

ChainMap

Het is een woordenboekachtige klasse die in staat is om een ​​enkele weergave van meerdere toewijzingen te maken. Het retourneert in feite een lijst met verschillende andere woordenboeken. Stel dat u twee woordenboeken heeft met meerdere sleutelwaardeparen, in dit geval maakt ChainMap een enkele lijst met beide woordenboeken erin.

Hoe het werkt?

uit collecties ChainMap a = {1: 'edureka', 2: 'python'} b = {3: 'data science', 4: 'Machine learning'} c = ChainMap (a, b) print (c) #the output is ChainMap [{1: 'edureka', 2: 'python'}, {3: 'data science', 4: 'Machine learning'}]

Om toegang te krijgen tot of elementen in te voegen, gebruiken we de sleutels als index. Maar om een ​​nieuw woordenboek toe te voegen aan de ChainMap gebruiken we de volgende aanpak.

a1 = {5: 'AI', 6: 'neurale netwerken'} c1 = c.new_child (a1) print (c1) # de uitvoer is ChainMap [{1: 'edureka', 2: 'python'}, { 3: 'data science', 4: 'Machine learning'}, {5: 'AI', 6: 'neurale netwerken'}]

Teller

Het is een woordenboeksubklasse die wordt gebruikt om hash-objecten te tellen.

Hoe het werkt?

wat doet trim in java
uit verzamelingen import Teller a = [1,1,1,1,2,3,3,4,3,3,4] c = Teller (a) print (c) # de uitvoer is Teller = ({1: 4, 2: 1, 3: 4, 4: 2})

Naast de bewerkingen die u op een woordenboek kunt uitvoeren, heeft Teller nog 3 bewerkingen die we kunnen uitvoeren.

  1. elementfunctie - Het retourneert een lijst met alle elementen in de teller.
  2. Most_common () - Het retourneert een gesorteerde lijst met het aantal van elk element in de teller.
  3. Subtract () - Het neemt een itereerbaar object als argument en trekt het aantal elementen in de teller af.

OrderedDict

Het is een woordenboeksubklasse die de volgorde onthoudt waarin de vermeldingen zijn toegevoegd. Kortom, zelfs als u de waarde van de sleutel wijzigt, wordt de positie niet gewijzigd vanwege de volgorde waarin deze in het woordenboek is ingevoegd.

Hoe het werkt?

uit collecties import OrderedDict od = OrderedDict () od [1] = 'e' od [2] = 'd' od [3] = 'u' od [4] = 'r' od [5] = 'e' od [6] = 'k' from [7] = 'a' print (from) # de uitvoer wordt OrderedDict [(1, 'e'), (2, 'd'), (3, 'u'), (4, 'r'), (5, 'e'), (6, 'k'), (7, 'a')]

Het maakt niet uit welke waarde in het woordenboek wordt ingevoegd, de OrderedDict onthoudt de volgorde waarin het werd ingevoegd en haalt de uitvoer dienovereenkomstig op. Zelfs als we de waarde van de sleutel veranderen. Laten we zeggen dat als we de sleutelwaarde 4 in 8 veranderen, de volgorde in de uitvoer niet verandert.

defaultdict

Het is een woordenboeksubklasse die een fabrieksfunctie aanroept om ontbrekende waarden op te geven. Over het algemeen genereert het geen fouten wanneer een ontbrekende sleutelwaarde in een woordenboek wordt aangeroepen.

Hoe het werkt?

uit verzamelingen import defaultdict d = defaultdict (int) #we moeten ook een type specificeren. d [1] = 'edureka' d [2] = 'python' print (d [3]) # het zal de uitvoer als 0 geven in plaats van keyerror.

UserDict

Deze klasse fungeert als een wrapper rond woordenboekobjecten. De behoefte aan deze klasse kwam voort uit de noodzaak om rechtstreeks vanuit dict. Het wordt gemakkelijker om met deze klasse te werken omdat het onderliggende woordenboek een attribuut wordt.

class Collections.UserDict ([initialdata])

Deze klasse simuleert een woordenboek. De inhoud van de instantie wordt bewaard in een gewoon woordenboek dat toegankelijk is met het ‘data’ -attribuut van de klasse UserDict. De referentie van de oorspronkelijke gegevens wordt niet bewaard, zodat deze voor andere doeleinden kan worden gebruikt.

Gebruikers lijst

Deze klasse werkt als een wrapper rond de lijstobjecten. Het is een nuttige basisklasse voor andere lijstachtige klassen die van hen kunnen erven en de bestaande methoden kunnen overschrijven of zelfs minder nieuwe kunnen toevoegen.

De behoefte aan deze klasse kwam voort uit de noodzaak om rechtstreeks vanuit de lijst te subklassen. Het wordt gemakkelijker om met deze klasse te werken omdat de onderliggende lijst een attribuut wordt.

class Collections.UserList ([lijst])

Het is de klasse die een lijst simuleert. De inhoud van de instantie wordt bijgehouden in een gebruikelijke lijst. Er wordt vertrouwd op de subklassen van de lijst om een ​​constructor te bieden die kan worden aangeroepen met geen of één stelling.

hoe de scannerklasse in java te gebruiken

In deze blog hebben we geleerd over de gespecialiseerde datastructuren die worden geleverd met de verzamelingsmodule in python. Optimalisatie leidt tot betere prestaties en betere resultaten. Hetzelfde geldt ook voor onze eigen carrière en vaardigheden. Als je je leerproces een vliegende start wilt geven en de manier waarop je naar programmeren kijkt wilt optimaliseren, schrijf je dan in voor edureka's en ontketen de eindeloze mogelijkheden met python.

Heeft u vragen? vermeld ze in opmerkingen, en we nemen zo snel mogelijk contact met u op.