Licznik Pythona

Pytania do rozmowy kwalifikacyjnej na temat projektowania systemu może być tak nieograniczona, że ​​trudno jest określić właściwy sposób przygotowania. Teraz jestem w stanie złamać rundy projektowe Amazon, Microsoft i Adobe po zakupie ta książka. Codziennie poprawiaj jeden pytanie projektowe i obiecuję, że możesz złamać cały projekt.

Co to jest licznik Pythona?

Licznik Pythona to kontener obecny w kolekcje moduł. Zawiera licznik każdego elementu obecnego w pojemniku.

Kontener można zdefiniować jako obiekt, który z kolei przechowuje obiekty. Możesz uzyskać dostęp do obiektów, przechodząc nad nimi. Lista, krotka i słownik to przykłady wbudowanych kontenerów. Liczniki są alternatywą dla wbudowanych pojemników.

W ramach projektu Słownik Pythona jest superklasą licznika Pythona. Tak więc, podobnie jak słownik, licznik jest również nieuporządkowaną kolekcją. W liczniku elementy i ich odpowiednia liczba są przechowywane jako para klucz-wartość w formacie słownikowym. Jest podobny do multisetów w innych językach.

Inicjowanie licznika Pythona:

Konstrukcję licznika możemy nazwać na trzy sposoby:

  • sekwencja elementów, takich jak lista, krotka, ciągi itp.,
  • słownik zawierający klucze i odpowiadające im wartości liczników.
  • argument słowa kluczowego mapujący nazwy ciągów na ich odpowiednie wartości licznika.
from collections import Counter

#sequence of items
print(Counter(('A','1','2','3','A','A','3','A')))

#dictionary containing keys and their respective counts
print(Counter({'A':1,'B':3,'C':7}))

#keyword arguments mapping keys to count values
print(Counter(A=1,B=3,C=7))

Wynik to:

Counter({'A': 4, '3': 2, '1': 1, '2': 1})
Counter({'C': 7, 'B': 3, 'A': 1})
Counter({'C': 7, 'B': 3, 'A': 1})

Usuwanie elementów z licznika Pythona:

Za pomocą słowa kluczowego del możemy elementować dowolny element z licznika. Nie otrzymamy żadnego błędu, nawet jeśli dany element nie występuje.

from collections import Counter

counter=Counter()
counter.update([1,3,2,1,4,3,2,2,3])
print(counter)
del counter[4]
print(counter)
Counter({3: 3, 2: 3, 1: 2, 4: 1})
Counter({3: 3, 2: 3, 1: 2})

Operacje na liczniku Pythona:

Na liczniku Pythona możemy wykonywać operacje arytmetyczne, takie jak dodawanie, odejmowanie, przecięcie i łączenie.

  • Dodawanie i odejmowanie zwracają tylko liczby dodatnie.
  • Przecięcie zwraca dodatnie elementy obecne w obu licznikach o wartości minimalnej.
  • Unia zwraca dodatnie elementy obecne w obu żetonach z maksymalna wartość.
from collections import Counter

counter=Counter()
counter1=Counter([1,3,2,1,4,3,2,2,3])
counter2=Counter((1,3,4,2,5))

#Addition
print(counter1+counter2)
#Subtraction
print(counter1-counter2)
#Intersection
print(counter1&counter2)
#union
print(counter1|counter2)
Counter({3: 4, 2: 4, 1: 3, 4: 2, 5: 1})
Counter({3: 2, 2: 2, 1: 1})
Counter({1: 1, 3: 1, 2: 1, 4: 1})
Counter({3: 3, 2: 3, 1: 2, 4: 1, 5: 1})

Uzyskaj różne elementy sekwencji:

Innym sposobem wykorzystania licznika jest zliczenie różnych elementów kolekcji.

from collections import Counter

sequence=[1,2,4,2,3,1,2,3,3,2,4,1]
print(Counter(sequence))
Counter({2: 4, 1: 3, 3: 3, 4: 2})

Powszechnie używane metody w Python Counter:

elementy():

element() jest funkcją klasy Counter. Typ zwracany to itertools, dlatego zwraca iterator zawierający wszystkie znane elementy licznika.

<class 'itertools.chain'>

Parametry:

Nie przyjmuje żadnych parametrów.

Błędy i wyjątki:

  • Ponieważ zwraca iterator, po bezpośrednim wydrukowaniu wypisuje wartość śmieci.
counter1=Counter(A=4,B=5,C=12)

print(counter1.elements())
<itertools.chain object at 0x02DAA370>
  • Element() zwraca tylko elementy z dodatnią liczbą, stąd ignoruje elementy z zerem i wartości ujemne.
from collections import Counter

sequence=Counter(a=2,d=-1,b=0,c=3)

for i in sequence.elements():
    print("% s : % s" % (i, sequence[i]))
a : 2
a : 2
c : 3
c : 3
c : 3

odjąć():

Odejmuje z licznika elementy, które są obecne w przekazanym liczniku. W przeciwieństwie do elements() zwraca elementy, które liczą zarówno wartość zerową, jak i ujemną.

from collections import Counter 

counter1=Counter(A=4,B=5,C=12) 
counter2=Counter(A=5,B=5,C=3) 
counter1.subtract(counter2) 

print(counter1)
Counter({'C': 9, 'B': 0, 'A': -1})

aktualizacja():

Możemy albo utworzyć pusty licznik, albo zaktualizować wychodzący licznik za pomocą metody update().

from collections import Counter 

#Initializing empty Counter 
counter=Counter() 
counter.update([1,3,2,1,4,3,2,2,3]) 
print(counter) 

counter.update((1,3,4,2)) 
print(counter)
Counter({3: 3, 2: 3, 1: 2, 4: 1}) 
Counter({3: 4, 2: 4, 1: 3, 4: 2})

Kiedy aktualizujemy licznik, istniejące dane nie zostaną zastąpione, zostaną zwiększone.

 

Wywiady dotyczące projektowania systemu pękania
Translate »