කලින් පාඩමේදී (Part 05) අපි කතා කළේ List ගැනනේ. List එක කියන්නේ හරියට "ගමන් මල්ලක්" (Travel Bag) වගේ. ඕන වෙලාවක සිප් එක ඇරලා බඩු දාන්නත් පුළුවන්, එළියට විසි කරන්නත් පුළුවන්. 🎒
හැබැයි හිතන්න, ඔයා බැංකුවක වැඩ කරනවා කියලා. ඔයාට ඕන පාරිභෝගිකයාගේ Account Number එක Save කරගන්න. ඒක කවදාවත් වෙනස් වෙන්න බෑ නේද? එතකොට List එකක් පාවිච්චි කරලා හරියන්නේ නෑ (මොකද List වෙනස් කරන්න පුළුවන් නිසා).
අන්න ඒ වගේ විශේෂ අවස්ථා වලට Python අපිට තව සුපිරි Data Structures 3ක් දීලා තියෙනවා. අද අපි මේ තුනම "පොඩි ළමයෙක්ට තේරෙන විදියට" ගොඩ දාගමු. 👇
1. Tuple (ටපල්) - වෙනස් කළ නොහැකි ලැයිස්තුව 🔐
සරලවම කිව්වොත්, Tuple එකක් කියන්නේ Lock කරපු List එකක්. හැදුවට පස්සේ ආයේ කෑලි එකතු කරන්න (Append) බෑ, අයින් කරන්න (Remove) බෑ. ඒක ගල් කුළුණක් වගේ ස්ථිරයි.
අපි මේකට පාවිච්චි කරන්නේ වටකුරු වරහන් ( ).
- Immutable (වෙනස් කළ නොහැක): මේක තමයි ලොකුම වාසිය. වැරදිලා වත් ඩේටා වෙනස් වෙන්නේ නෑ.
- Faster (වේගවත්): List එකට වඩා මෙමරිය අඩුවෙන් ගන්න නිසා, Tuple එකක් List එකකට වඩා වේගයෙන් වැඩ කරනවා.
my_tuple = ("Apple", "Banana", "Cherry")
print(my_tuple[0]) # Output: Apple (කියවන්න පුළුවන්)
# ⚠️ Error එන තැන:
# my_tuple[1] = "Mango" -> බෑ! වෙනස් කරන්න බෑ.
# my_tuple.append("Grapes") -> බෑ! අලුතෙන් දාන්න බෑ.
Magic Trick: Unpacking (පෙට්ටිය කැඩීම) 🎁
Python වල විතරක් තියෙන පිස්සු හැදෙන වැඩකෑල්ලක් මේක. අපිට පුළුවන් Tuple එකක තියෙන බඩු ටික, එක පාර Variables වලට කඩලා ගන්න.
# පරණ ක්රමය: x = coordinates[0]...
# Unpacking ක්රමය:
x, y = coordinates
print(x) # Output: 10
print(y) # Output: 20
2. Set (සෙට්) - ඩුප්ලිකේට් නැති ලෝකය 🚫👯
ඔයා ඉස්කෝලේ ගණිතයට ඉගෙන ගත්ත "කුලක" (Sets) මතකද? මේ ඒකම තමයි. Set එකක තියෙන විශේෂත්වය තමයි, එකම දේ දෙපාරක් තියෙන්න බෑ.
අපි මේකට පාවිච්චි කරන්නේ සඟල වරහන් { }.
ඔයාට List එකක තියෙන ඩුප්ලිකේට් (ආයේ ආයේ තියෙන ඒවා) අයින් කරගන්න ඕන වුනාම, Set එකක් තමයි ලේසිම ක්රමය.
numbers = [1, 2, 2, 3, 3, 4]
# මේක Set එකක් කරපු ගමන් ඩුප්ලිකේට් මැකෙනවා
unique_numbers = set(numbers)
print(unique_numbers) # Output: {1, 2, 3, 4}
Set එකක් ඇතුලේ බඩු තියෙන්නේ අපි දාපු පිළිවෙලට නෙමෙයි. ඒ නිසා
my_set[0] කියලා Index වලින් Data ගන්න බෑ!
3. Dictionary (ඩික්ෂනරි) - දත්ත ලෝකයේ රජු 👑
මේක තමයි Python වල තියෙන බලවත්ම Data Structure එක. අද කාලේ තියෙන හැම Database එකක්ම (JSON Format) වැඩ කරන්නේ මේ ක්රමයට.
නිකන්ම ලිස්ට් එකක් ගත්තොත් අපි Data ගන්නේ අංකයෙන් (Index 0, 1, 2). හැබැයි Dictionary එකකදි අපි Data ගන්නේ "නමකින්" (Key).
- Key (යතුර): අපි හොයන නම (උදා: "Name", "Age").
- Value (වටිනාකම): ඒ නමට අදාළ දත්තය (උදා: "Kamal", 25).
{ "key": value }
student = {
"name": "Kavisha",
"age": 22,
"city": "Colombo",
"is_student": True
}
# 1. Data ගන්න හැටි (Key එක දෙනවා)
print(student["name"]) # Output: Kavisha
# 2. අලුත් Data එකතු කරන හැටි
student["email"] = "kp@gmail.com"
# 3. තියෙන Data වෙනස් කරන හැටි (Update)
student["city"] = "Kandy"
4. මොකක්ද හොඳම? (Comparison Table) 📊
මේ 4 පටලගන්නේ නැතුව මතක තියාගන්න ලේසිම විදිය මෙන්න.
| Type | වරහන් | වෙනස් කළ හැකිද? | පිළිවෙලක් (Order)? | Duplicate පුළුවන්ද? |
|---|---|---|---|---|
| List | [ ] |
ඔව් (Mutable) | ඔව් ✅ | ඔව් ✅ |
| Tuple | ( ) |
නෑ (Immutable) 🔒 | ඔව් ✅ | ඔව් ✅ |
| Set | { } |
ඔව් (Add/Remove) | නෑ ❌ | නෑ ❌ (Unique) |
| Dictionary | {k:v} |
ඔව් (Mutable) | ඔව් (Python 3.7+) | Keys බෑ ❌ |
Project: Contact Book App 📞📘
අපි ඉගෙන ගත්ත Dictionary පාවිච්චි කරලා, අපිටම කියලා Contact Save කරන App එකක් හදමු. මේකේ නම දුන්නම Number එක එන්න ඕනේ.
💻 The Contact Book Code
print("📘 Welcome to Python Phonebook!")
while True:
print("\n1. Add Contact | 2. Search | 3. Delete | 4. View All | 5. Exit")
choice = input("ඔයාගේ තේරීම: ")
# --- 1. Add Contact ---
if choice == "1":
name = input("නම: ")
phone = input("අංකය: ")
contacts[name] = phone # Dictionary එකට දානවා (Key=Name, Value=Phone)
print(f"✅ {name} Save කළා!")
# --- 2. Search Contact ---
elif choice == "2":
search_name = input("හොයන්න ඕන නම: ")
# .get() එකෙන් බැලුවම Error එන්නේ නෑ නැති වුනත්
result = contacts.get(search_name, "සොරි! එහෙම කෙනෙක් නෑ.")
print(f"📞 Number: {result}")
# --- 3. Delete Contact ---
elif choice == "3":
del_name = input("මකන්න ඕන නම: ")
if del_name in contacts:
del contacts[del_name]
print(f"🗑️ {del_name} Delete කළා!")
else:
print("⚠️ එහෙම කෙනෙක් නෑනේ!")
# --- 4. View All ---
elif choice == "4":
print("\n📜 Contact List:")
# Key සහ Value දෙකම ගන්න items() පාවිච්චි කරනවා
for name, num in contacts.items():
print(f"- {name}: {num}")
elif choice == "5":
break
අවසාන වශයෙන්... 🏁
සුභ පැතුම්! 🎉 දැන් ඔයා Python වල තියෙන ප්රධානම Data Structures 4 ම (List, Tuple, Set, Dictionary) දන්නවා. මේ දැනුම තිබ්බොත් විතරයි ඉස්සරහට එන AI Projects, Web Development Projects කරන්න පුළුවන් වෙන්නේ.
ඊළඟ කොටසින්: වෙන කෙනෙක් ලියපු කෝඩ් අපේ වැඩ වලට ගන්නේ කොහොමද? (Modules & Libraries) 📦
දිගටම KP Tech Gear සමඟ රැඳී සිටින්න! 👇

Discussion