🌍 Select Your Language

Please choose your preferred language to read the articles. (ඔබට කියවීමට පහසු භාෂාව තෝරන්න)

BREAKING NEWS
🚀 Kaweesha launched the new AI Tech Blog! 💻 Python & Java Tutorials are now live. 🎮 Game Development Guide: Building 2D Games with Godot. 🌐 Web Hosting secrets revealed - Check the latest post!

Python Sinhala - Part 05: දත්ත ගොඩක් එකතැන තියමු! (Python Lists & Data Structures) 📚🛒

Python Lists Data Structure deep explanation Sinhala Tutorial Part 05 - Indexing, Slicing, and Methods

අපි මේ වෙනකම් ඉගෙන ගත්තේ තනි තනි දත්ත (Variables) එක්ක වැඩ කරන හැටිනේ. ඒක හරියට ඔයා සුපර් මාර්කට් එකට ගිහින් ගේන හැම බඩුවක්ම අතේ උස්සන් එනවා වගේ වැඩක්. බඩු 2-3ක් නම් කොහොම හරි අතේ ගේන්න පුළුවන්, ඒත් බඩු 100ක් වුනොත්? 🛒😰

අපිට අනිවාර්යයෙන්ම ලොකු "බෑග් එකක්" හරි "ට්‍රොලියක්" හරි ඕනේ වෙනවා. අන්න ඒ ට්‍රොලියට තමයි Programming වල Data Structure එකක් කියලා කියන්නේ. Python වල තියෙන ජනප්‍රියම, ලේසිම සහ බලවත්ම ට්‍රොලිය තමයි "List" එක.

අද පාඩම ටිකක් ගැඹුරුයි. මේක තමයි ඔයා හදන ඕනෑම ලොකු Software එකක (Facebook Newsfeed එකේ ඉඳන් Daraz Cart එක දක්වා, AI Model එකකට දෙන Data සෙට් එකක් දක්වා) අඩිතාලම වෙන්නේ. කෝපි එකක් ලං කරගෙන හොඳට අවධානයෙන් කියවන්න. 👇


📜 1. මොකක්ද මේ List එකක් කියන්නේ?

සරලවම කිව්වොත්, "පිළිවෙලකට සැකසුණු දත්ත එකතුවක්" (Ordered Collection) තමයි List එකක් කියන්නේ. Python වලදී අපි List එකක් අඳුරගන්නේ කොටු වරහන් [ ] වලින්. මේ වරහන් ඇතුලේ අපි දත්ත කොමා (,) වලින් වෙන් කරලා ලියනවා.

List එකක ප්‍රධාන විශේෂත්වයන් 3ක්:

  • ඕනෑම දෙයක් දාන්න පුළුවන් (Heterogeneous): C++, Java වල Array එකක් ඇතුළට දාන්න පුළුවන් එකම ජාතියේ ඒවා විතරයි. හැබැයි Python List එකක් ඇතුලේ Numbers, Strings, Booleans මේ ඔක්කොම කලවමේ තියන්න පුළුවන්.
  • පිළිවෙලක් තියෙනවා (Ordered): අපි දාන පිළිවෙලටම තමයි බඩු ටික තියෙන්නේ. ඒක ඉබේ මාරු වෙන්නේ නෑ.
  • වෙනස් කරන්න පුළුවන් (Mutable): ලිස්ට් එක හැදුවට පස්සෙත් අපිට අලුතින් දේවල් එකතු කරන්න, අයින් කරන්න, තියෙන දේවල් වෙනස් කරන්න පුළුවන්.
 
# පරණ ක්‍රමය (Variable 100ක් තිබ්බොත් මාර වදයක්) 😫 friend1 = "Kamal" friend2 = "Nimal" friend3 = "Sunil" # List ක්‍රමය (පට්ට ලේසියි) 😎 friends = ["Kamal", "Nimal", "Sunil"] numbers = [10, 20, 30, 40, 50] mixed_list = ["KP", 25, True, 3.14] # කලවම් ලිස්ට් එකක්

🔍 2. දත්ත එළියට ගැනීම (Indexing & Slicing)

ලිස්ට් එකක් ඇතුලේ බඩු දැම්මට වැඩක් නෑ, ඒවා අපිට ඕන වෙලාවට එළියට ගන්න දැනගන්න ඕනේ. මේකට අපි කියන්නේ Indexing කියලා. ලිස්ට් එකේ තියෙන හැම බඩුවකටම අංකයක් (Index Number) තියෙනවා.

🤔 Deep Dive: ඇයි Computer එක 0 සිට ගණන් කරන්නේ? (The Zero Mystery)

ගොඩක් අයට එන ප්‍රශ්නයක් මේක. මනුස්සයෝ ගණන් කරන්න පටන් ගන්නේ 1, 2, 3 කියලා. හැබැයි Computer එක පටන් ගන්නේ 0, 1, 2 කියලා. ඇයි බං එහෙම වෙන්නේ?

විද්‍යාත්මක හේතුව (Memory Offset):
List එකක් කියන්නේ Computer Memory (RAM) එකේ ළඟ ළඟ තියෙන කාමර පේළියක් වගේ. Variable එකේ නම (උදා: friends) කියන්නේ ඒ පේළියේ ආරම්භක ස්ථානයටයි (Start Point).
  • ඔයාට පළවෙනි කාමරේට ("Kamal") යන්න ඕන නම්, ඔයා ආරම්භක තැන ඉඳන් කොච්චර දුරක් යන්න ඕනද? පියවර 0 යි! (මොකද ඔයා දැනටමත් එතනනේ ඉන්නේ).
  • දෙවෙනි කාමරේට ("Nimal") යන්න නම්, ඔයා ආරම්භයේ ඉඳන් පියවර 1ක් ඉස්සරහට යන්න ඕනේ.
අන්න ඒ "යන්න ඕන පියවර ගාණ" (Steps from start) තමයි මේ Index එක කියන්නේ. ඒකයි අපි 0න් පටන් ගන්නේ!
 
my_fruits = ["Apple", "Banana", "Mango", "Orange"] print(my_fruits[0]) # Output: Apple (පළමු එක්කෙනා) print(my_fruits[2]) # Output: Mango (තුන්වන එක්කෙනා)

↩️ Negative Indexing (අග ඉඳන් මුලට)

C, Java වගේ භාෂා වල ලිස්ට් එකක අන්තිම එකා හොයන්න මාර ගේමක් දෙන්න ඕනේ. හැබැයි Python වල විතරක් තියෙන සුපිරි වැඩකෑල්ලක් තමයි Negative Indexing. අන්තිම එකාට කෙලින්ම -1 දුන්නා නම් හරි.

 
print(my_fruits[-1]) # Output: Orange (අන්තිම එකා) print(my_fruits[-2]) # Output: Mango (අග ඉඳන් දෙවෙනියා)

🍰 Advanced Slicing (කේක් කෑල්ලක් කපමු)

අපිට ලිස්ට් එකෙන් කොටසක් විතරක් කපලා ගන්න ඕන නම්? ඒකට අපි Slicing [start:stop:step] පාවිච්චි කරනවා. මෙතනදී මතක තියාගන්න ඕන දේ තමයි stop අගය කවදාවත් අහුවෙන්නේ නෑ.

 
numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] # 1. Index 2 සිට 5 දක්වා (5 අහුවෙන්නේ නෑ!) print(numbers[2:5]) # Output: [2, 3, 4] # 2. මුල සිට Index 4 දක්වා print(numbers[:4]) # Output: [0, 1, 2, 3] # 3. Index 5 සිට අග දක්වාම print(numbers[5:]) # Output: [5, 6, 7, 8, 9] # 4. Step පාවිච්චි කිරීම (දෙකෙන් දෙකට පැනීම) print(numbers[1:8:2]) # Output: [1, 3, 5, 7] # Pro Tip: මුළු ලිස්ට් එකම අග ඉඳන් මුලට හරවන්න (Reverse) ලේසිම ක්‍රමය! print(numbers[::-1]) # Output: [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

🛠️ 3. List එකක් Modify කරමු (Top List Methods)

List එකක් කියන්නේ "Mutable" (වෙනස් කළ හැකි) දෙයක් කියලා මම කිව්වනේ. Python අපිට ලිස්ට් එක්ක සෙල්ලම් කරන්න විශේෂ Tools (Methods) ටොන් ගාණක් දීලා තියෙනවා. මේවා තමයි ගොඩක්ම පාවිච්චි වෙන්නේ.

Method එක කරන දේ උදාහරණයක්
append(item) අලුත් බඩුවක් ලිස්ට් එකේ අන්තිමටම එකතු කරනවා. cart.append("Apple")
insert(index, item) අපිට ඕන තැනකට (Index) බලෙන්ම රිංගවනවා. cart.insert(1, "Mango")
extend(list2) තව ලිස්ට් එකක් මේ ලිස්ට් එකේ අගට අමුණනවා. cart.extend(["Pen", "Book"])
remove(item) නම කියලා අයින් කරනවා. (පළවෙනියටම හම්බෙන එක විතරයි) cart.remove("Apple")
pop(index) අංකය කියලා අයින් කරනවා. මුකුත් නොදුන්නොත් අන්තිම එකා විසි කරනවා. cart.pop(2)
sort() අකාරාදී පිළිවෙලට (A-Z) හෝ කුඩා එකේ සිට විශාල එකට පෙළගස්වනවා. cart.sort()
len(list) ලිස්ට් එක ඇතුලේ අයිතම කීයක් තියෙනවද කියලා ගණන් කරනවා. len(cart)

🤝 4. The Power Combo: Lists + Loops

ලිස්ට් එකක තියෙන බඩු 1000ක් වුනත් එක පාර Print කරන්න ඕන වුනාම අපි print(list[0]), print(list[1])... කියලා ලියනවද? නෑ! අපි කලින් පාඩමේ ඉගෙන ගත්ත For Loop එක මෙතනට ගේනවා.

 
shopping_list = ["Egg", "Milk", "Bread", "Butter"] for item in shopping_list: print(f"මට අමතක නොකර {item} ගේන්න ඕනේ.")

⚡ Enumerate: Index එකයි බඩුවයි දෙකම ඕන නම්?

සමහර වෙලාවට අපිට බඩුවේ නම විතරක් මදි, ඒක ලිස්ට් එකේ කීවෙනියටද තියෙන්නේ කියලත් දැනගන්න ඕනේ. අන්න ඒ වෙලාවට enumerate() පාවිච්චි කරනවා.

 
for index, item in enumerate(shopping_list): print(f"Index {index} තියෙන්නේ: {item}") # Output: # Index 0 තියෙන්නේ: Egg # Index 1 තියෙන්නේ: Milk ...

🏢 5. Nested Lists (පෙට්ටි ඇතුලේ පෙට්ටි - 2D Lists)

List එකක් ඇතුළට ඕනෑම දෙයක් දාන්න පුළුවන් කියලා මම කිව්වනේ. එහෙනම් List එකක් ඇතුළට තව List එකක් දාන්න බැරිද? අනිවාර්යයෙන්ම පුළුවන්! මේවට කියන්නේ 2D Arrays හෙවත් Matrix කියලා. මේවා හරියට Excel Sheet එකක් වගේ.

 
# පන්තියක ළමයි 3 දෙනෙක්ගේ ලකුණු 3 බැගින් (Maths, Science, English) student_marks = [ [85, 90, 78], # ළමයා 0 ගේ ලකුණු (Row 0) [92, 88, 95], # ළමයා 1 ගේ ලකුණු (Row 1) [70, 65, 80] # ළමයා 2 ගේ ලකුණු (Row 2) ] # ළමයා 1 ගේ Science (දෙවෙනි විෂය) ලකුණ ගමු # මුලින් Row එක (1), ඊළඟට Column එක (1) දෙන්න ඕනේ print(student_marks[1][1]) # Output: 88

🔥 Mega Projects: කෝඩ් කරලාම බලමු!

දැන් අපි ඉගෙන ගත්ත දේවල් පාවිච්චි කරලා ප්‍රායෝගික වැඩසටහන් 2ක්ම හදමු.

🛒 Project 1: Smart Shopping Cart

ඔයාට බඩු ලිස්ට් එකට දාන්න, බලන්න සහ අයින් කරන්න පුළුවන් සම්පූර්ණ Terminal-based වැඩසටහනක්.

 
cart = [] # 1. හිස් ලිස්ට් එකක් හදාගන්නවා (අපේ බෑග් එක) print("🛒 Welcome to Smart Shopping Cart!") while True: print("\n--- Menu ---") print("1. බඩු එකතු කරන්න (Add)") print("2. ලිස්ට් එක බලන්න (View)") print("3. බඩුවක් අයින් කරන්න (Remove)") print("4. ඉවත් වන්න (Exit)") choice = input("ඔයාගේ තේරීම (1-4): ") # --- 1. Add Item --- if choice == "1": item = input("ගන්න ඕන දේ Type කරන්න: ") cart.append(item) # මෙතනින් තමයි බෑග් එකට දාන්නේ print(f"✅ {item} එකතු කළා!") # --- 2. View List --- elif choice == "2": print("\n🛍️ ඔයාගේ බඩු ලිස්ට් එක:") if len(cart) == 0: print("තාම මුකුත් නෑ... (Empty)") else: for i, product in enumerate(cart): print(f"{i+1}. {product}") # 1න් පටන්ගන්න i+1 කලා # --- 3. Remove Item --- elif choice == "3": remove_item = input("අයින් කරන්න ඕන දේ කියන්න: ") if remove_item in cart: # බඩුව තියෙනවද බලනවා cart.remove(remove_item) print(f"❌ {remove_item} අයින් කළා!") else: print("⚠️ එහෙම දෙයක් ලිස්ට් එකේ නෑනේ බොක්ක!") # --- 4. Exit --- elif choice == "4": print("Good Bye! 👋 Happy Shopping!") break # Loop එක කඩනවා else: print("⚠️ වැරදි අංකයක්! ආයේ උත්සාහ කරන්න.")

📈 Project 2: Student Marks Analyzer

ළමයින්ගේ ලකුණු වගයක් List එකකට අරගෙන, ඒකේ උපරිම, අවම සහ සාමාන්‍ය (Average) ලකුණ හොයන වැඩසටහනක්.

  
marks = [78, 92, 45, 88, 62, 99, 55] # Built-in functions පාවිච්චි කරලා ලේසියෙන්ම ගණන් හදමු! total_marks = sum(marks) max_mark = max(marks) min_mark = min(marks) student_count = len(marks) # සාමාන්‍ය ලකුණ average = total_marks / student_count print("📊 පන්ති වාර්තාව:") print(f"ළමයි ගණන: {student_count}") print(f"වැඩිම ලකුණ: {max_mark}") print(f"අඩුම ලකුණ: {min_mark}") print(f"සාමාන්‍ය (Average): {average:.2f}") # දශම 2කට සීමා කලා

🏁 අවසාන වශයෙන්...

අද ඔයා ඉගෙන ගත්තේ Programming වල හදවත වගේ දෙයක්. List එකක් කියන්නේ දත්ත හසුරුවන්න තියෙන මූලිකම මෙවලමයි. මේ Shopping Cart Project එකයි, Marks Analyzer එකයි තනියම Type කරලා Run කරලා බලන්න. අමතක වෙනවා නම් Methods ටික කොළයක ලියාගන්න.

ඊළඟ කොටසින්: List වල නරක සහෝදරයා සහ Dictionary පොත (Tuples & Dictionaries) 📖 ගැන කතා කරමු.

අද ලිපිය ගැන ඔයාගේ අදහස කමෙන්ට් කරන්න අමතක කරන්න එපා. දිගටම KP Tech Gear සමඟ රැඳී සිටින්න! ජය වේවා! 👇

Author

About

Tech enthusiast, Python/Java Developer, and Gamer. Sharing knowledge about coding and modern technology.

Discussion