முக்கிய உள்ளடக்கத்திற்குச் செல்லவும்
தொகுதி 3 · பாடம் 4 இன் 4பாடத்திட்டத்தில் 12/36~10 min
தொகுதி பாடங்கள் (4/4)

அமைக்கிறது

தொகுப்பு என்பது தனித்துவமான, வரிசைப்படுத்தப்படாத கூறுகளின் தொகுப்பாகும். மூன்று வல்லரசுகள்:

  1. தானியங்கு நீக்கம்: ஒரே உறுப்பை இருமுறை சேர்ப்பதால் எந்த விளைவும் இல்லை.
  2. O(1) உறுப்பினர் சோதனை: x in s மில்லியன் கணக்கில் இருந்தாலும் மிக வேகமாக உள்ளது உறுப்புகள் (இது ஹாஷ் அடிப்படையிலானது, கட்டளைகள் போன்றவை).
  3. செட் செயல்பாடுகள்: யூனியன், குறுக்குவெட்டு, வேறுபாடு, சமச்சீர் வேறுபாடு.

ஒரு தொகுப்பை உருவாக்குதல்

Python
vuoto = set()           # ATTENZIONE: {} è un dict vuoto, non un set!
numeri = {1, 2, 3}
da_lista = set([1, 1, 2, 3, 3, 3])   # {1, 2, 3}

பிரேஸ்கள் மட்டும் {} ஒரு வெற்று அகராதியை உருவாக்கவும், ஒரு தொகுப்பை அல்ல: வெற்று தொகுப்பிற்கு உங்களுக்கு set() தேவை.

ஒரு தொகுப்பை மாற்றுதல்

Python
s = {1, 2, 3}
s.add(4)         # {1, 2, 3, 4}
s.add(1)         # nessun effetto (già presente)
s.discard(99)    # rimuove se presente, silenzioso altrimenti
s.remove(2)      # rimuove o solleva KeyError

செயல்பாடுகளை அமைக்கவும்

Python
a = {1, 2, 3, 4}
b = {3, 4, 5, 6}

a | b    # {1, 2, 3, 4, 5, 6}     unione
a & b    # {3, 4}                  intersezione
a - b    # {1, 2}                  differenza (in a ma non in b)
a ^ b    # {1, 2, 5, 6}            differenza simmetrica (xor)

முறை படிவங்களும் உள்ளன (a.union(b), a.intersection(b), …) இதில் கூடுதலாக, செட் மட்டுமின்றி, மீண்டும் செய்யக்கூடிய எந்த வகையையும் ஏற்கவும்.

உறுப்பினர் சோதனை

Python
parole = {"ciao", "mondo", "python"}
"ciao" in parole       # True   O(1)
"java" not in parole   # True

ஒப்பிடுவதற்கு: in உடன் list உடன் தேடுவது O(n) மற்றும் நீண்டது இது மிகவும் மெதுவாக உள்ளது என்று பட்டியலிடுகிறது.

உறைந்த தொகுப்பு: மாறாத பதிப்பு

frozenset({1, 2, 3}) என்பது ஹேஷபிள் பதிப்பாகும்: இது ஒரு டிக்ட் கீ அல்லது ஒரு மற்றொரு தொகுப்பின் உறுப்பு.

செயல்பாடுகள் மற்றும் செயல்திறனை அமைக்கவும்

தொகுப்புகள் ஹாஷ் டேபிள்களாகச் செயல்படுத்தப்படுகின்றன, இது உறுப்பினர் சோதனையை (x in my_set) மிக வேகமாகச் செய்கிறது: இது நிலையான நேரத்தில் இயங்குகிறது O(1), தேடலுக்கு நேரியல் நேரம் எடுக்கும் O(n). கூடுதலாக, அவை யூனியன் (|), குறுக்குவெட்டு (&) மற்றும் வேறுபாடு (-) போன்ற இயற்கணித செயல்பாடுகளை ஆதரிக்கின்றன.

முயற்சி செய்து பாருங்கள்

உடற்பயிற்சி#python.m3.l4.e1
முயற்சிகள்: 0ஏற்றுகிறது…

`nums = [1, 2, 2, 3, 3, 3, 4]` என்ற பட்டியலைக் கொடுத்து, தனிப்பட்ட மதிப்புகளுடன் (எந்த வரிசையிலும்) `unique_items` ஐ உருவாக்கி, பின்னர் `count` ஐ len(unique_items) ஆகக் கணக்கிடவும். `எண்ணிக்கை` மதிப்பிடவும்.

எடிட்டரை ஏற்றுகிறது…
குறிப்பைக் காட்டு

தொகுப்பு(எண்கள்) நகல்களை நீக்குகிறது.

3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்

மதிப்பாய்வு பயிற்சி

உடற்பயிற்சி#python.m3.l4.e2
முயற்சிகள்: 0ஏற்றுகிறது…

`a = {1, 2, 3, 4}` மற்றும் `b = {3, 4, 5, 6}` கொடுக்கப்பட்டால், குறுக்குவெட்டை `common_items` ஆகவும், a-b வித்தியாசத்தை `only_a` ஆகவும் கணக்கிடவும். டூப்பிள் `(பொதுவான_உருப்படிகள், மட்டும்_அ)` என்பதை மதிப்பிடவும்.

எடிட்டரை ஏற்றுகிறது…
குறிப்பைக் காட்டு

& குறுக்குவெட்டு, - வேறுபாடு.

3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்

கூடுதல் சவால்

உடற்பயிற்சி#python.m3.l4.e3
முயற்சிகள்: 0ஏற்றுகிறது…

Given two sets `set_a = {1, 2, 3}` and `set_b = {2, 3, 4}`, calculate the mathematical intersection of the two sets (their common elements). Store the resulting set in `common_elements` and evaluate it.

எடிட்டரை ஏற்றுகிறது…
குறிப்பைக் காட்டு

நீங்கள் & ஆபரேட்டர் அல்லது set_a.intersection(set_b) முறையைப் பயன்படுத்தலாம்.

3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்