សំណួរសំភាសន៍រចនាប្រព័ន្ធ អាចជាការបើកចំហរ ដូច្នេះវាពិបាកពេកក្នុងការដឹងពីវិធីត្រឹមត្រូវក្នុងការរៀបចំ។ ឥឡូវនេះខ្ញុំអាចបំបែកការរចនានៃ 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})
នៅពេលដែលយើងធ្វើបច្ចុប្បន្នភាពបញ្ជរ ទិន្នន័យដែលមានស្រាប់នឹងមិនត្រូវបានជំនួសទេ វាកើនឡើង។
