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.
Spis treści
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.
