Welkom op de Nederland Computer Kennisnetwerk!  
 
Zoeken computer kennis
Home Hardware Netwerken Programmering Software Computerstoring Besturingssysteem
Computer Kennis >> Programmering >> python Programming >> Content
Hoe kan ik efficiënt een circulaire array in Python implementeren?
Python heeft geen ingebouwde circulaire array-datastructuur. U kunt er echter één efficiënt implementeren met behulp van een standaard Python-lijst en de modulo-operator (`%`). Hier zijn twee benaderingen:

Methode 1:een lijst- en modulo-operator gebruiken

Deze methode is het meest eenvoudig en over het algemeen het meest efficiënt. Het gebruikt de modulo-operator om de indices van de array te omsluiten.

```python

klasse CircularArray:

def __init__(zelf, capaciteit):

zelfcapaciteit =capaciteit

self.array =[Geen] * capaciteit

zelf.hoofd =0

zelf.grootte =0

def is_leeg(zelf):

return self.size ==0

def is_full(zelf):

retourneer self.size ==self.capacity

def enqueue(zelf, item):

als self.is_full():

raise IndexError("Circulaire array is vol")

self.array[(self.head + self.size) % self.capacity] =item

zelf.grootte +=1

def dequeue(zelf):

als self.is_empty():

raise IndexError("Circulaire array is leeg")

item =self.array[self.head]

eigen.hoofd =(eigen.hoofd + 1) % eigen.capaciteit

zelf.grootte -=1

artikel retourneren

def kijkje (zelf):

als self.is_empty():

raise IndexError("Circulaire array is leeg")

retourneer self.array[self.head]

def __len__(zelf):

retourneer zelf.grootte

def __str__(zelf):

return str(self.matrix)

#Voorbeeldgebruik

circulaire_array =CirculaireArray(5)

circular_array.enqueue(10)

circular_array.enqueue(20)

circular_array.enqueue(30)

print(circulaire_array) # Uitvoer:[10, 20, 30, Geen, Geen]

print(circulaire_array.dequeue()) # Uitvoer:10

print(circulaire_array) # Uitvoer:[Geen, 20, 30, Geen, Geen]

circular_array.enqueue(40)

circular_array.enqueue(50)

print(circulaire_array) # Uitvoer:[Geen, 20, 30, 40, 50]

print(circulaire_array.is_full()) # Uitvoer:Waar

```

Methode 2:`collections.deque` gebruiken (voor eenvoudigere implementatie maar mogelijk minder efficiënt voor grote arrays)

Python's `collections.deque` biedt een wachtrij met twee uiteinden, die kan worden gebruikt om een ​​cirkelvormige array na te bootsen. Het is eenvoudiger te implementeren, maar is mogelijk minder efficiënt voor zeer grote arrays in vergelijking met de directe, op lijsten gebaseerde aanpak vanwege overhead.

```python

uit collecties import deque

klasse CircularArrayDeque:

def __init__(zelf, capaciteit):

zelfcapaciteit =capaciteit

self.array =deque(maxlen=capaciteit)

def is_leeg(zelf):

retourneer len(self.array) ==0

def is_full(zelf):

return len(self.array) ==self.capacity

def enqueue(zelf, item):

als self.is_full():

raise IndexError("Circulaire array is vol")

self.array.append(item)

def dequeue(zelf):

als self.is_empty():

raise IndexError("Circulaire array is leeg")

retourneer self.array.popleft()

def kijkje (zelf):

als self.is_empty():

raise IndexError("Circulaire array is leeg")

retourneer self.array[0]

def __len__(zelf):

retourneer len(self.array)

def __str__(zelf):

return str(lijst(self.matrix))

#Voorbeeldgebruik (hetzelfde als hierboven, vervang gewoon CircularArray door CircularArrayDeque)

```

Welke methode moet je kiezen?

In de meeste gevallen Methode 1 (met behulp van een lijst- en modulo-operator) wordt aanbevolen vanwege de over het algemeen betere prestaties, vooral voor grotere arrays. `collections.deque` is een goede optie als eenvoud en leesbaarheid prioriteit krijgen boven ruwe prestaties, en de arraygrootte naar verwachting niet extreem groot zal zijn. Als u met werkelijk enorme arrays werkt, kunt u overwegen om NumPy-arrays te gebruiken voor verdere prestatiewinst, hoewel dat een ander niveau van complexiteit toevoegt.

Previous: Next:
  python Programming
·Hoe te Output krijgen van een …
·Hoe je lokale variabelen gebru…
·Hoe kan ik efficiënt een Pyth…
·Hoe om te controleren Als een …
·Hoe af te tellen in de Range i…
·Tutorial voor Runpy in Python 
·Hoe maak je een Uitgezet funct…
·Hoe kan ik een array van Strin…
·Hoe maak je een Python script …
  Related Articles
Waarom gebruiken we functies bij het pro…
Welke rol speelt een tolk bij het progra…
Wat is de rol van een compiler bij compu…
Wat is het doel van een voorwaardelijke …
Wat is de hiërarchie van programmeertal…
Wat is de analoge definitie in de inform…
Wat is redex en hoe verhoudt dit zich to…
Wat is assembleertaal en hoe wordt het g…
Wat is assemblagecode en hoe wordt deze …
  Programmering Articles
·Hoe maak je dubbele aanhalingstekens ver…
·Wat is een variant in VB ? 
·Hoe te Listbox Clear 
·Hoe te String converteren naar Time in S…
·Meerdere Doelen in NetBeans Projecten 
·Hoe maak je een Memory Leak Detect in Wi…
·Hoe te VBS bestanden Tutorial Zorg 
·Hoe de post -methode gebruiken in Window…
·Hoe maak je een Domain Name in PHP 
Copyright © Computer Kennis https://www.nldit.com