လွယ်လွယ်ပြောရရင် Tuple ဆိုတာ Python မှာ data တွေကို စုထည့်ထားတဲ့ container တစ်ခုပါ။ List နဲ့ အရမ်းတူတယ်၊ ဒါပေမယ့် တစ်ခုပဲ ကွာတယ်။ Tuple ကို တစ်ခါ ဆောက်ပြီးရင် အထဲက data ကို ပြောင်းလို့မရဘူး။
ကျောက်စာမှာ ထွင်းထားတဲ့ မွေးနေ့ နဲ့ နှုမူနာ စဉ်းစားကြည့်ပါ။
List ဆိုတာ ခဲတံနဲ့ ရေးတဲ့ shopping စာရွက်လိုပဲ။ ရေးပြီးမှ စိတ်ပြောင်းရင် ဖျက်ပြီး ပြင်ရေးလို့ရတယ်။ item အသစ်ပါ ထပ်ထည့်လို့ရတယ်။ Tuple ကတော့ မွေးလက်မှတ်မှာ ထွင်းထားတဲ့ မွေးနေ့လိုပဲ။ တစ်ခါ သတ်မှတ်ပြီးရင် ပြင်လို့မရတော့ဘူး။ အဲဒီ မပြင်နိုင်တာကိုယ်က အားနည်းချက် မဟုတ်ဘူး၊ ရည်ရွယ်ချက်ကိုက အဲဒါပဲ။ ပြောင်းဖို့ မလိုတဲ့ data ကို မတော်တဆ ပြောင်းမိတာ မဖြစ်အောင် တမင် ပိတ်ထားတာ။
Python မှာ Tuple ကို ကွင်းပုံစံ () နဲ့ ရေးတယ်. List ကို [] နဲ့ ရေးတာနဲ့ ကွာတာလေးပဲ –
colors = ("red", "green", "blue") — ဒါက tuplecolors = ["red", "green", "blue"] — ဒါက list
ဖတ်တာက တူတူပဲ colors[0] ဆိုရင် "red" ရတယ်
ဒါပေမယ့် colors[0] = "yellow" လို့ ပြောင်းဖို့ ကြိုးစားရင် tuple ကတော့ error တက်ပြတယ်။ list ကတော့ ရတယ်
ဒါဆိုရင် Tuple ကို ဘာအတွက် သုံးမလဲ လို့ မေးစရာ ရှိပါတယ်။ အဖြေက ပြောင်းစရာမလိုတဲ့ data အတွက်ပါ။
ဥပမာ –
ပျော်တယ်၊ နေ့အမည် တွေလို မပြောင်းတဲ့ အရာတွေ ("Mon", "Tue", "Wed")
နေရာတစ်ခု ရဲ့ latitude, longitude လို တွဲကျတဲ့ တန်ဖိုးတွေ (16.8, 96.1)
Function တစ်ခုက တန်ဖိုး နှစ်ခု၊ သုံးခုကို တပြိုင်နက် ပြန်ပေးချင်တဲ့အခါ
အဲဒီနောက်ဆုံး အချက်က တော်တော် အသုံးဝင်တယ်။ Function ကနေ တန်ဖိုး နှစ်ခု ပြန်ချင်ရင် tuple အနေနဲ့ ပြန်လို့ ရတယ်။ ယူတဲ့ ဘက်ကလည်း x, y = get_point() လိုမျိုး နှစ်ခု ခွဲပြီး တစ်ခါတည်း လက်ခံလို့ရတယ်။ ဒါကို unpacking လို့လည်း ခေါ်ပါတယ်။
List နဲ့ Tuple ဘယ်အခါ ဘာသုံးမလဲ ဆိုတာ အလွယ်မှတ်နည်းက ဒီလိုပါ –
List သုံး — item တွေ ထပ်ထည့်မယ်၊ ဖျက်မယ်၊ ပြောင်းလဲစရာ ရှိမယ် ဆိုရင်
Tuple သုံး — data က သတ်မှတ်ပြီးသား ပုံစံအတိုင်း နေရမယ်၊ မတော်တဆ ပြောင်းမိတာ မဖြစ်စေချင်ရင်
တကယ့် project တွေမှာ tuple ကို dictionary ရဲ့ key အနေနဲ့လည်း သုံးလို့ရပါတယ်။ List ကိုတော့ key အဖြစ် သုံးလို့မရဘူး။ ဘာလို့လဲ ဆိုတော့ dictionary key ဆိုတာ ပြောင်းလို့မရတဲ့ အရာမှ ဖြစ်နိုင်လို့ပါ။ ဒါလည်း tuple ရဲ့ မပြောင်းနိုင်တဲ့ သဘောက ပေးတဲ့ အကျိုးကျေးဇူးတစ်ခုပဲ။
ကျွန်တော်လည်း Python စသင်တုန်းက tuple ကို list ရဲ့ သုံးမရတဲ့ version လို့ပဲ ထင်ခဲ့တာ။ အခုတော့ သဘောပေါက်လာတယ်။ တချို့ data က ပြောင်းနိုင်တာကိုက ပြဿနာဖြစ်နေတာပါ။ မွေးနေ့၊ လက်မှတ်၊ ကိုသာ မပြောင်းဘဲ ထားလိုက်ရင် စိတ်အေးရတဲ့ အရာတွေ အများကြီး ရှိတယ်။ Code ထဲမှာလည်း အဲဒီလိုပဲ — ပြောင်းဖို့မလိုတာကို tuple နဲ့ ပိတ်ထားလိုက်ရင် bug တော်တော် နည်းသွားတယ်။ 🙂