Set: declaring, accessing; methods (add, clear, copy, discard, pop, remove, union, update)

Python sets અંધાધૂંધ, નિયમ-બદ્ધ collections છે જે તરત duplicates ખતમ કરે અને overlapping trends શોધે છે જ્યારે order અને positional indexing ને સંપૂર્ણપણે ના પાડે છે.

11 min read · 12 cards · 3 checks

Read in: English · हिन्दी · ગુજરાતી


Theory

Duplicate Entry નો માથાનો દુખાવો

તમારા Semester 1 BCA104 C labs માં, જો તમને expense transactions દર્શાવતા numbers ની એક શ્રેણી મળી અને તમારે એ items ની unique categories જાણવી હતી જેના પર તમે પૈસા ખર્ચ્યા, તમારે થકવનારા nested loops લખવા પડત. તમારે દરેક item જોવું, એક accumulation array scan કરવું, અને હાથે તપાસવું પડત કે એ item પહેલેથી ગણાયું કે નહીં. Python આ સમય લેતી lookup logic ને સંપૂર્ણપણે કેમ છોડી દે છે, એવું એક collection આપતાં જે આપોઆપ duplicate values reject કરે છે અને raw records ને uniqueness માટે તરત filter કરે છે?

Theory

Entry Token Drop-Box

એક college campus event માં એક physical drop-box ની કલ્પના કરો જ્યાં students numbered tokens નાખે છે. જો પાંચ students 'Token 10' marked identical tokens નાખે, જાદુઈ box એમને એક એકલા physical token માં merge કરે છે. વધુમાં, જ્યારે તમે box હલાવો છો, tokens વગર fixed positions ના બેતરતીબ ખખડે છે. હવે એક 'પહેલા' કે 'છેલ્લા' token નો કોઈ concept નથી. તમે ઝડપથી પૂછી શકો કે શું એક ખાસ token અંદર હાજર છે, પણ તમે ક્યારેય 'index 0 પર item' માંગી શકતા નથી કારણ કે સામગ્રી unordered નિલંબનની એક સતત અવસ્થામાં છે.

Theory

Set Mechanics ઔપચારિક રીતે

Python માં એક set curly braces {} ની અંદર ઘેરાયેલા unique elements નો એક unordered, mutable collection છે. કારણ કે sets unordered છે, એ એક insertion record કે ઐતિહાસિક sequence જાળવતા નથી. પરિણામે, sets માં index lookup (set[0]) કે sequence slicing માટે support સંપૂર્ણપણે નથી. Sets duplicate values રાખી શકતા નથી; declaration કે runtime mutation દરમિયાન append કરાયેલો કોઈ પણ duplicate તરત ગળી અને condense કરાય છે.

At a glance

Table 1: elements manipulation અને mathematical updates માટે જરૂરી Python set methods.

Method ToolMemory પર કરેલી ActionError / Exception Behavior
items.add(val)set માં એક નવી unique primitive value નાખે છે.value પહેલેથી હાજર હોય તો ચૂપચાપ અવગણાય.
items.remove(val)set થી એક ખાસ value સીધી delete કરે છે.value ગાયબ હોય તો એક તરત KeyError ફેંકે છે.
items.discard(val)set થી એક ખાસ value સુરક્ષિત રીતે delete કરે છે.value ગાયબ હોય તો શૂન્ય errors સાથે ચૂપચાપ નિષ્ફળ.
items.pop()set થી એક મનસ્વી element હટાવે અને return કરે છે.એક empty set પર call કરવાથી એક KeyError ફેંકે છે.
set1.union(set2)બંને sets થી items ને એક બિલકુલ નવા set માં જોડે છે.original source sets ને સંપૂર્ણપણે unmodified છોડે છે.

Theory

Worked Example: Unique Expense Tags નું Audit

ચાલો જોઈએ કે આપણું PocketMoney tracking system set collections નો લાભ કેવી રીતે લે છે. આપણે uniqueness કાઢવા પુનરાવર્તિત item categories રાખતી એક list ને એક set constructor માં feed કરીશું, duplicate addition નિયમો અજમાવીશું, અને સખ્ત remove tool ને safe discard tool સાથે સરખાવીશું.

Practical

PocketMoney Unique Category Auditor

# Step 1: Converting a list with duplicate entries into a unique set
raw_categories = ["food", "travel", "food", "canteen", "travel"]
unique_tags = set(raw_categories)

# Step 2: Attempting to add an existing element vs a new one
unique_tags.add("food")
unique_tags.add("stationery")

# Step 3: Removing an item using the safe discard method
unique_tags.discard("travel")

# Step 4: Removing an item safely even if it doesn't exist
unique_tags.discard("entertainment")

print("Audited Unique Set:", unique_tags)
print("Is 'food' present?:", "food" in unique_tags)

This example runs in Gri-Learn on the web, where you can edit it and see the output.

Think first

Set Content State ને ટ્રેસ કરો

ઉપરના Python tracking script નું મનમાં વિશ્લેષણ કરો. print થતાં unique_tags ની અંદર કયા elements બચશે? શું order આપણા code statement sequence સાથે મેળ ખાશે?

Show the answer

script output કરશે (element order બદલાઈ શકે):

Audited Unique Set: {'canteen', 'food', 'stationery'}

Is 'food' present?: True

કેમ? raw_categories convert કરવું {'food', 'travel', 'canteen'} આપે છે. 'food' ઉમેરવું કંઈ કરતું નથી કારણ કે એ એક duplicate છે. 'stationery' ઉમેરવું એને {'food', 'travel', 'canteen', 'stationery'} સુધી ફેલાવે છે. discard('travel') call કરવું એને સાફસૂથરું delete કરે છે. discard('entertainment') call કરવું કંઈ કરતું નથી અને કોઈ errors ફેંકતું નથી. કારણ કે sets unordered છે, output layout order તમારી screen પર મનસ્વી રીતે દેખાઈ શકે.

Quiz

શું થાય છે જો એક programmer એક blank empty set collection initialize કરવાની આશામાં line: ledger = {} લખે?

  1. Python શૂન્ય length વાળું એક valid empty set બનાવે છે.
  2. એ એક set ને બદલે એક empty dictionary collection initialize કરે છે.
  3. script એક SyntaxError સાથે crash થાય છે કારણ કે empty braces પ્રતિબંધિત છે.
  4. એ એક immutable frozen tuple wrapper બનાવે છે.
Show the answer

એ એક set ને બદલે એક empty dictionary collection initialize કરે છે.

કારણ કે curly braces sets અને dictionaries બંને દ્વારા વહેંચાયેલા છે, અને dictionaries ઐતિહાસિક રીતે પહેલાં આવ્યા, Python literal expression {} ને એક empty dictionary object પર default કરે છે. એક ખરું empty set બનાવવા, તમારે constructor function સ્પષ્ટ રીતે call કરવું પડશે: ledger = set().

Quiz

આ script snippet પર વિચાર કરો: codes = {"A", "B", "C"} print(codes[0])

  1. એ "A" print કરે છે.
  2. એ machine memory પર આધારિત એક random character print કરે છે.
  3. એ એક TypeError ફેંકે છે: 'set' object is not subscriptable.
  4. એ એક IndexOutOfBoundsException ફેંકે છે.
Show the answer

એ એક TypeError ફેંકે છે: 'set' object is not subscriptable.

Sets વગર positional markers કે numeric keys ના સંપૂર્ણપણે unordered collections છે. કારણ કે elements ના કોઈ ખાસ slots નથી, એક index lookup કરવા bracket notation વાપરવું સંપૂર્ણપણે પ્રતિબંધિત છે અને એક તરત runtime TypeError trigger કરે છે.

Watch out

Classic ફાંદો: Remove Crash વિરુદ્ધ Discard Safety

university laboratory examinations માં સૌથી વારંવાર marks-ગુમાવતી ભૂલ verification વગર એક set થી parameters scrub કરવા મનસ્વી રીતે .remove() વાપરવી છે. જો target value dataset થી ગેરહાજર હોય, .remove() એક તરત runtime KeyError crash પેદા કરે છે. હંમેશા .discard() વાપરો જ્યારે તમે items ને સુરક્ષિત રીતે ભૂંસવા માંગો વગર તમારા program ને crash કર્યા જો item પહેલેથી delete હતું.

Theory

Sets ને Semester 3 સાથે જોડવા

Set tracking advanced database cross-referencing layers પર સીધું map થાય છે. Semester 3 (BCA303) માં, જ્યારે એક SQLite engine થી કાઢેલા બે અલગ relational tables કે log datasets ની સરખામણી કરો છો, તમે તમારા query data fields ને Python sets માં convert કરી શકો અને એક જ step માં sync anomalies કે overlapping profiles અલગ કરવા .union(), .intersection(), કે differences ચલાવી શકો.

Summary

Key takeaways

  • Sets mutable, સંપૂર્ણપણે unordered collections છે જેમાં સખ્તાઈથી unique items હોય છે.
  • Sets entry initialization કે modification પર આપોઆપ duplicate values discard કરે છે.
  • index coordinates દ્વારા positional lookup block છે કારણ કે sets માં સંરચિત order નથી.
  • remove method elements drop કરે છે પણ item ગાયબ હોય તો એક KeyError ફેંકે છે.
  • discard tool elements ને સુરક્ષિત રીતે drop કરે છે વગર કોઈ runtime exceptions પેદા કર્યા.
  • Memory Hook: Braces mixed sets રાખે છે, blanks dicts બનાવે છે, sets indexing discard કરે છે!

Study this properly

This page is the lesson to read. In Gri-Learn the same topic is a graded deck: the self-checks are scored and your weak topics are tracked. Free to start.

Start this topic

Already have an account? Sign in

More from Python Collections

Gri-Learn · syllabus-mapped B.C.A. lessons in English, Hindi and Gujarati