Python Örnekli Koleksiyonlardaki Sayaç

Nedir? Python Tezgah?

Python Sayaç, kapta bulunan öğelerin her birinin sayısını tutacak bir kaptır. Sayaç, sözlük sınıfının içinde bulunan bir alt sınıftır.

Sayaç, sözlük sınıfının içinde bulunan bir alt sınıftır. kullanarak Python Sayaç aracını kullanarak karma tablo nesnesi olarak da adlandırılan bir nesnedeki anahtar/değer çiftlerini sayabilirsiniz.

Neden kullanım Python Tezgah?

İşte, kullanılmasının başlıca nedenleri Python 3 Sayaç:

  • Sayaç, tıpkı hashable nesneler gibi verileri sırasız bir koleksiyonda tutar. Buradaki öğeler anahtarları ve sayıyı değer olarak temsil eder.
  • Tekrarlanabilir bir listedeki öğeleri saymanıza olanak tanır.
  • Toplama, çıkarma, kesişim ve birleştirme gibi aritmetik işlemler Sayaç üzerinde kolaylıkla gerçekleştirilebilir.
  • Bir Sayaç başka bir sayaçtaki öğeleri de sayabilir

Giriş Python sayaç

Python Sayaç girdi olarak hepsi yinelenebilir nesneler olan bir liste, tuple, sözlük, dize alır ve size her öğenin sayısını içeren çıktı verir.

Sözdizimi:

Counter(list)

Aşağıdaki listeyi düşünün:

list1 = ['x','y','z','x','x','x','y', 'z']

Listede x, y ve z öğeleri bulunmaktadır. Bu listede Counter'ı kullandığınızda x, y ve z'nin kaç kez mevcut olduğunu sayar. Liste1'de sayaç kullanılıyorsa çıktı şöyle olmalıdır:

Counter({'x': 4, 'y': 2, 'z': 2})

Yani x'i 4, y'yi 2 ve z'yi 2 olarak saydık.

Counter'ı kullanmak için önce aşağıdaki örnekte gösterildiği gibi onu içe aktarmamız gerekir:

from collections import Counter

Burada Counter modülünün çalışmasını gösteren basit bir örnek verilmiştir.

from collections import Counter
list1 = ['x','y','z','x','x','x','y', 'z']
print(Counter(list1))

Çıktı:

Counter({'x': 4, 'y': 2, 'z': 2})

Dizeli Sayaç

In Python, her şey bir nesnedir ve dize de bir nesnedir. Python dizi karakterleri çift tırnak içine alarak kolayca oluşturulabilir. Python bir karakter türünü desteklemez. Bunlar bir uzunluktaki dizeler olarak ele alınır ve aynı zamanda bir alt dize olarak da kabul edilir.

Aşağıdaki örnekte Counter'a bir string aktarılmıştır. Anahtarın öğe ve değerin sayım olduğu anahtar/değer çiftiyle birlikte sözlük biçimini döndürür. Ayrıca alanı bir öğe olarak kabul eder ve dizedeki boşlukların sayısını verir.

Örnek:

from collections import Counter
my_str = "Welcome to Guru99 Tutorials!"
print(Counter(my_str))

Çıktı:

Counter({'o': 3, ' ': 3, 'u': 3, 'e': 2, 'l': 2, 't': 2, 'r': 2, '9': 2, 'W': 1,
 'c': 1, 'm': 1, 'G': 1, 'T': 1, 'i': 1, 'a': 1, 's': 1, '!': 1})

Listeli Sayaç

Liste, elemanları köşeli parantez içinde bulunan yinelebilir bir nesnedir.

Listedeki öğeler Sayaca verildiğinde hash tablosu nesnelerine dönüştürülecek, burada öğeler anahtar haline gelecek ve değerler verilen listedeki öğelerin sayısı olacaktır.

Örneğin ['x','y','z','x','x','x','y','z']. Listeye Sayaç'ı verdiğinizde, listedeki her bir öğenin sayısını size verecektir.

from collections import Counter
list1 = ['x','y','z','x','x','x','y','z']
print(Counter(list1))

Çıktı:

Counter({'x': 4, 'y': 2, 'z': 2})

Sözlüklü Sayaç

Bir sözlük, elemanlarını anahtar/değer çifti olarak içerir ve bunlar süslü parantez içinde yazılır.

Sözlük Sayaç'a verildiğinde, öğelerin anahtar haline geleceği karma tablo nesnelerine dönüştürülecek ve değerler, verilen sözlükteki öğelerin sayısı olacaktır.

Örneğin: {'x': 4, 'y': 2, 'z': 2, 'z': 2}. Sayaç işlevi, verilen sözlükteki her bir anahtarın sayısını bulmaya çalışacaktır.

from collections import Counter
dict1 =  {'x': 4, 'y': 2, 'z': 2, 'z': 2}
print(Counter(dict1))

Çıktı:

Counter({'x': 4, 'y': 2, 'z': 2})

Tuple'lı Sayaç

Tuple, yuvarlak parantez içinde virgülle ayrılmış nesnelerin bir koleksiyonudur. Counter, verilen tuple'daki her bir öğenin sayısını verecektir.

Demet Sayaca verildikten sonra, öğelerin anahtar haline geleceği ve değerlerin verilen demetteki öğelerin sayısı olacağı hash tablosu nesnesine dönüştürülecektir.

from collections import Counter
tuple1 = ('x','y','z','x','x','x','y','z')
print(Counter(tuple1))

Çıktı:

Counter({'x': 4, 'y': 2, 'z': 2})

Sayaçlara Erişim, Başlatma ve Güncelleme

Sayaç Başlatılıyor

Bir Sayaç, aşağıda gösterildiği gibi dize değeri, liste, sözlük veya tuple geçirilerek başlatılabilir:

from collections import Counter
print(Counter("Welcome to Guru99 Tutorials!"))   #using string
print(Counter(['x','y','z','x','x','x','y', 'z'])) #using list
print(Counter({'x': 4, 'y': 2, 'z': 2})) #using dictionary
print(Counter(('x','y','z','x','x','x','y', 'z'))) #using tuple

Ayrıca aşağıda gösterildiği gibi boş bir Sayacı başlatabilirsiniz:

from collections import Counter
_count = Counter()

Sayaç Güncelleniyor

update() yöntemini kullanarak Sayaca değer ekleyebilirsiniz.

_count.update('Welcome to Guru99 Tutorials!')

Son kod:

from collections import Counter
_count = Counter()
_count.update('Welcome to Guru99 Tutorials!')
print(_count)

Çıktı:

Counter({'o': 3, ' ': 3, 'u': 3, 'e': 2, 'l': 2, 't': 2, 'r': 2, '9': 2, 'W': 1,
 'c': 1, 'm': 1, 'G': 1, 'T': 1, 'i': 1, 'a': 1, 's': 1, '!': 1})

Sayaca Erişim

Sayaçtan değerleri almak için aşağıdakileri yapabilirsiniz:

from collections import Counter

_count = Counter()
_count.update('Welcome to Guru99 Tutorials!')
print('%s : %d' % ('u', _count['u']))
print('\n')
for char in 'Guru':
    print('%s : %d' % (char, _count[char]))

Çıktı:

u : 3

G : 1
u : 3
r : 2
u : 3

Sayaçtan Bir Elemanı Silmek

Counter'dan bir öğeyi silmek için aşağıdaki örnekte gösterildiği gibi del'i kullanabilirsiniz:

Örnek:

from collections import Counter
dict1 =  {'x': 4, 'y': 2, 'z': 2}
del dict1["x"]
print(Counter(dict1))

Çıktı:

Counter({'y': 2, 'z': 2})

Aritmetik işlem Python sayaç

Toplama, çıkarma, kesişim ve birleştirme gibi aritmetik işlemler aşağıdaki örnekte gösterildiği gibi bir Sayaç üzerinde yapılabilir:

Örnek:

from collections import Counter
counter1 =  Counter({'x': 4, 'y': 2, 'z': -2})

counter2 = Counter({'x1': -12, 'y': 5, 'z':4 })

#Addition
counter3 = counter1 + counter2 # only the values that are positive will be returned.

print(counter3)

#Subtraction
counter4 = counter1 - counter2 # all -ve numbers are excluded.For example z will be z = -2-4=-6, since it is -ve value it is not shown in the output

print(counter4)

#Intersection
counter5 = counter1 & counter2 # it will give all common positive minimum values from counter1 and counter2

print(counter5)

#Union
counter6 = counter1 | counter2 # it will give positive max values from counter1 and counter2

print(counter6)

Çıktı:

Counter({'y': 7, 'x': 4, 'z': 2})
Counter({'x1': 12, 'x': 4})
Counter({'y': 2})
Counter({'y': 5, 'x': 4, 'z': 4})

Mevcut Yöntemler Python sayaç

Counter'da bazı önemli yöntemler mevcut, işte bunların listesi:

  • elementler() : Bu yöntem size sayı > 0 olan tüm öğeleri döndürür. Sayısı 0 veya -1 olan öğeler döndürülmeyecektir.
  • most_common(değer): Bu yöntem size Sayaç listesindeki en yaygın öğeleri döndürecektir.
  • çıkarma(): Bu yöntem, öğeleri başka bir Sayaçtan çıkarmak için kullanılır.
  • güncelleme(): Bu yöntem, başka bir Sayaçtaki öğeleri güncellemek için kullanılır.

Örnek: elementler()

from collections import Counter
counter1 =  Counter({'x': 5, 'y': 2, 'z': -2, 'x1':0})

_elements = counter1.elements() # will give you all elements with positive value and count>0
for a in _elements:
    print(a)

Çıktı:

x
x
x
x
x
y
y

Örnek: most_common(value)

from collections import Counter
counter1 =  Counter({'x': 5, 'y': 12, 'z': -2, 'x1':0})

common_element = counter1.most_common(2) # The dictionary will be sorted as per the most common element first followed by next.
print(common_element)

common_element1 = counter1.most_common() # if the value is not given to most_common , it will sort the dictionary and give the most common elements from the start.The last element will be the least common element.
print(common_element1)

Çıktı:

 [('y', 12), ('x', 5)]
[('y', 12), ('x', 5), ('x1', 0), ('z', -2)]

Örnek: çıkarma()

from collections import Counter
counter1 =  Counter({'x': 5, 'y': 12, 'z': -2, 'x1':0})
counter2 = Counter({'x': 2, 'y':5})

counter1.subtract(counter2)
print(counter1)

Çıktı:

Counter({'y': 7, 'x': 3, 'x1': 0, 'z': -2})

Örnek: güncelleme()

from collections import Counter
counter1 =  Counter({'x': 5, 'y': 12, 'z': -2, 'x1':0})
counter2 = Counter({'x': 2, 'y':5})
counter1.update(counter2)
print(counter1)

Çıktı:

Counter({'y': 17, 'x': 7, 'x1': 0, 'z': -2})

Sayımları Yeniden Atama Python

Sayaç sayılarını aşağıda gösterildiği gibi yeniden atayabilirsiniz:

Şu şekilde bir sözlüğünüz olduğunu düşünün: {'x': 5, 'y': 12, 'z': -2, 'x1':0}

Öğenin sayısını aşağıda gösterildiği gibi değiştirebilirsiniz:

from collections import Counter
counter1 =  Counter({'x': 5, 'y': 12, 'z': -2, 'x1':0})

counter1['y'] = 20

print(counter1)

Çıktı: Çalıştırdıktan sonra y sayısının 12'den 20'ye değiştiğini göreceksiniz.

Counter({'y': 20, 'x': 5, 'x1': 0, 'z': -2})

Sayacı kullanarak Öğe sayısını alma ve ayarlama

Counter'ı kullanarak bir öğenin sayısını almak için aşağıdakileri yapabilirsiniz:

from collections import Counter
counter1 =  Counter({'x': 5, 'y': 12, 'z': -2, 'x1':0})
print(counter1['y']) # this will give you the count of element 'y'

Çıktı:

12

Öğenin sayısını ayarlamak için aşağıdakileri yapabilirsiniz:

from collections import Counter
counter1 =  Counter({'x': 5, 'y': 12, 'z': -2, 'x1':0})

print(counter1['y'])

counter1['y'] = 20
counter1['y1'] = 10

print(counter1)

Çıktı:

12
Counter({'y': 20, 'y1': 10, 'x': 5, 'x1': 0, 'z': -2})

ÖZET

  • Sayaç, kapta bulunan öğelerin her birinin sayısını tutacak bir kaptır.
  • Counter, sözlük sınıfının içinde bulunan bir alt sınıftır.
  • Kullanma Python Sayaç aracıyla, karma tablosu nesnesi olarak da adlandırılan bir nesnedeki anahtar/değer çiftlerini sayabilirsiniz.
  • Sayaç, tıpkı hashable nesneler gibi verileri sırasız bir koleksiyonda tutar. Buradaki öğeler anahtarları ve sayıyı değer olarak temsil eder.
  • Tekrarlanabilir bir listedeki öğeleri saymanıza olanak tanır.
  • Toplama, çıkarma, kesişim ve birleştirme gibi aritmetik işlemler Sayaç üzerinde kolaylıkla gerçekleştirilebilir.
  • Bir Sayaç başka bir sayaçtan gelen öğeleri de sayabilir.
  • Bir Counter'da bulunan önemli yöntemler elements() , most_common(value), subtract() ve update()'dir.
  • Bir sayaç bir dize, liste, sözlük ve tuple üzerinde kullanılabilir.