Python Counter

សំណួរសំភាសន៍រចនាប្រព័ន្ធ អាចជាការបើកចំហរ ដូច្នេះវាពិបាកពេកក្នុងការដឹងពីវិធីត្រឹមត្រូវក្នុងការរៀបចំ។ ឥឡូវនេះខ្ញុំអាចបំបែកការរចនានៃ Amazon, Microsoft និង Adobe បន្ទាប់ពីទិញ សៀវភៅ​នេះ. ពិនិត្យឡើងវិញប្រចាំថ្ងៃ សំណួររចនា ហើយខ្ញុំសន្យាថាអ្នកអាចបំបែកការរចនាជុំ។

តើ Python Counter ជាអ្វី?

Python counter គឺជាកុងតឺន័រដែលមានវត្តមាននៅក្នុង ការប្រមូល ម៉ូឌុល។ វាផ្ទុកចំនួនធាតុនីមួយៗដែលមាននៅក្នុងកុងតឺន័រ។

កុងតឺន័រអាចត្រូវបានកំណត់ថាជាវត្ថុដែលនៅក្នុងវេនផ្ទុកវត្ថុ។ អ្នកអាចចូលប្រើវត្ថុដោយធ្វើម្តងទៀតពីលើពួកវា។ បញ្ជី, Tuple, និងវចនានុក្រមគឺជាឧទាហរណ៍នៃធុងដែលភ្ជាប់មកជាមួយ។ បញ្ជរគឺជាជម្រើសមួយសម្រាប់ធុងដែលភ្ជាប់មកជាមួយ។

នេះ វចនានុក្រម Python គឺជា superclass នៃ Python Counter ។ ដូច្នេះ ដូច​ជា​វចនានុក្រម បញ្ជរ​ក៏​ជា​បណ្តុំ​ដែល​មិន​មាន​លំដាប់​ដែរ។ នៅក្នុងការរាប់ ធាតុ និងចំនួនរៀងៗខ្លួនត្រូវបានរក្សាទុកជាគូតម្លៃគន្លឹះក្នុងទម្រង់វចនានុក្រម។ វាស្រដៀងទៅនឹងសំណុំច្រើនជាភាសាផ្សេង។

ការចាប់ផ្តើមរាប់ Python៖

យើងអាចហៅសំណង់បញ្ជរតាមបីវិធី ដោយ៖

  • លំដាប់នៃធាតុដូចជា list, tuple, strings ជាដើម។
  • វចនានុក្រមដែលមានកូនសោ និងតម្លៃរាប់រៀងៗខ្លួន។
  • អាគុយម៉ង់ពាក្យគន្លឹះ គូសផែនទីឈ្មោះខ្សែអក្សរទៅនឹងតម្លៃរាប់រៀងៗខ្លួន។
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))

លទ្ធផលគឺ:

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

ការលុបធាតុចេញពីបញ្ជរ Python៖

ដោយប្រើពាក្យគន្លឹះ del យើងអាចបញ្ចូលធាតុណាមួយពីរាប់។ យើង​នឹង​មិន​ទទួល​បាន​កំហុស​ណា​មួយ​ឡើយ បើ​ទោះ​បី​ជា​ធាតុ​ដែល​បាន​ផ្តល់​ឲ្យ​មិន​មាន។

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})

ប្រតិបត្តិការនៅលើ Python counter៖

យើងអាចធ្វើប្រតិបត្តិការនព្វន្ធដូចជា បូក ដក ប្រសព្វ និងសហជីពនៅលើ Python counter

  • ការបូក និងដក ត្រឡប់តែការ លេខវិជ្ជមាន.
  • ប្រសព្វត្រឡប់ធាតុវិជ្ជមានដែលមានវត្តមាននៅក្នុងបញ្ជរទាំងពីរជាមួយនឹងតម្លៃអប្បបរមា។
  • Union ត្រឡប់ធាតុវិជ្ជមានដែលមានវត្តមាននៅក្នុងបញ្ជរទាំងពីរជាមួយ តម្លៃអតិបរមា.
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})

ទទួលបានធាតុផ្សេងគ្នានៃលំដាប់មួយ៖

វិធីមួយទៀតដែលយើងអាចប្រើការរាប់បានគឺដើម្បីទទួលបានការរាប់ធាតុផ្សេងគ្នានៃបណ្តុំមួយ។

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})

វិធីសាស្រ្តដែលប្រើជាទូទៅនៅលើ Python Counter៖

ធាតុ ():

element() គឺជាមុខងាររបស់ Counter class។ ប្រភេទត្រឡប់មកវិញគឺ itertools ដូច្នេះវាត្រឡប់ iterator ដែលមានធាតុដែលគេស្គាល់ទាំងអស់នៅក្នុងបញ្ជរ។

<class 'itertools.chain'>

ប៉ារ៉ាម៉ែត្រ:

វាមិនទទួលយកប៉ារ៉ាម៉ែត្រណាមួយទេ។

កំហុស និងករណីលើកលែង៖

  • ដោយសារ​វា​ត្រឡប់​ឧបករណ៍​បំប្លែង​សារ​ឡើងវិញ ពេល​បោះពុម្ព​ដោយ​ផ្ទាល់ វា​បោះពុម្ព​តម្លៃ​សំរាម។
counter1=Counter(A=4,B=5,C=12)

print(counter1.elements())
<itertools.chain object at 0x02DAA370>
  • ធាតុ() ត្រឡប់តែធាតុដែលមានចំនួនវិជ្ជមាន ដូច្នេះមិនអើពើនឹងធាតុដែលមានលេខសូន្យ និង តម្លៃអវិជ្ជមាន.
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

ដក ():

ដកធាតុចេញពីបញ្ជរដែលមាននៅក្នុងបញ្ជរដែលបានឆ្លងកាត់។ មិនដូចធាតុ() វាត្រឡប់ធាតុដែលរាប់តម្លៃសូន្យ ក៏ដូចជាអវិជ្ជមាន។

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})

អាប់ដេត():

យើងអាចបង្កើតបញ្ជរទទេ ឬធ្វើបច្ចុប្បន្នភាពបញ្ជរចេញដោយប្រើវិធី 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})

នៅពេលដែលយើងធ្វើបច្ចុប្បន្នភាពបញ្ជរ ទិន្នន័យដែលមានស្រាប់នឹងមិនត្រូវបានជំនួសទេ វាកើនឡើង។

 

បទសម្ភាសន៍រចនាប្រព័ន្ធបំបែក
Translate »