چندتاییها
لیستها برای ذخیرهسازی مجموعهای از اعضا مناسب است که ممکن است در طول برنامه تغییر کنند. قابلیّت تغییر دادن لیستها به ویژه زمانی مهم است که بخواهید با فهرستی از کاربران یک وبسایت یا شخصیتهای یک بازی کار کنید. با این حال گاهی به ساختن لیستی نیاز دارید که نباید تغییر کند. چندتاییها چنین امکانی به شما میدهند. پایتون به مقادیری که مقدارشان قابل تغییر نیست تغییرناپذیر میگوید و لیستِ تغییرناپذیرْ چندتایی نامیده میشود.
تعریف کردن یک چندتایی
چندتایی درست مشابه یک لیست است با این تفاوت که برای تعریف آن به جای کروشه از پرانتز استفاده میشود. پس از تعریف چندتایی میتوانید درست همانند یک لیست، با استفاده از شاخصِ هر عضو به مقدار آن دسترسی داشته باشید.
برای مثال اگر مستطیلی داشته باشیم که اندازهی آن همیشه باید ثابت باشد، برای اطمینان از تغییر نیافتن اندازهها میتوانیم ابعاد آن را در یک چندتایی قرار دهیم:
چندتایی dimensions را با استفاده از پرانتز به جای کروشه در 1 تعریف کردهایم. در 2 به کمک همان روشی که برای دسترسی به اعضای لیست استفاده میکردیم، هر عضو چندتایی را جداگانه چاپ میکنیم:
حال ببینیم اگر سعی کنیم یکی از عناصر داخل چندتایی را تغییر دهیم چه اتّفاقی میافتد:
کد در 1 سعی میکند مقدار اولّین بُعد را تغییر دهد امّا پایتون خطایی مربوط به نوع برمیگرداند. دلیل این مساله این است که سعی کردهایم یک چندتایی را تغییر دهیم و این کار برای این نوع مجاز نیست، پایتون میگوید که نمیتوانیم مقدار جدیدی به یکی از اعضای داخل چندتایی نسبت دهیم:
این کار به نفع ماست چون انتظار داریم هر گاه خطی در برنامه تلاش کرد ابعاد مستطیل را عوض کند، پایتون اعلام خطا کند.
از لحاظ فنّی چندتاییها با وجود کاما معنا مییابند؛ پرانتزها آنها را مرتّبتر و خواناتر میکنند. اگر بخواهید یک چندتایی با تنها یک عضو ایجاد کنید باید کامایی در ادامهی آن عضو بنویسید:
|
|
معمولاً ساختن چندتایی با یک عضو بیمعناست امّا در مواردی که آنها را به طور خودکار تولید میکنیم ممکن است چنین حالتی رخ دهد.
حلقه زدن در تمام مقادیر یک چندتایی
درست همانند کاری که در لیستها انجام میدادید، میتوانید به کمک یک حلقهی for در تمام اعضای یک چندتایی بچرخید:
پایتون تمام اعضای چندتایی را برمیگرداند، درست مانند لیستها:
رونویسی یک چندتایی
اگرچه نمیتوانید محتویات یک چندتایی را تغییر دهید امّا میتوانید به متغیّری که بیانگر یک چندتایی است، مقدار جدیدی نسبت دهید. بنابراین اگر به تغییر دادن ابعاد نیاز داشتیم میتوانیم کل چندتایی را دوباره تعریف کنیم:
خطهایی که از 1 شروع میشوند چندتاییِ اوّلیّه را تعریف و آن را چاپ میکنند. در 2 یک چندتاییِ جدید به متغیّر dimensions نسبت میدهیم. در 3 ابعاد جدید را چاپ میکنیم. پایتون این بار خطایی اعلام نمیکند زیرا بازنشانی یک متغیّر مجاز است:
چندتاییها در مقایسه با لیستها ساختمانهای دادهی سادهای هستند. هنگامی از آنها استفاده کنید که مجموعهی مقادیرِ موردِ نظرِ شما در طولِ عمرِ برنامه تغییر نمیکنند.
خودآزمایی
بوفه
یک رستورانِ بوفهای تنها پنج غذای اصلی ارائه میکند. پنج غذای ساده را در نظر بگیرید و نام آنها را در یک چندتایی ذخیره کنید.
- با یک حلقهی for غذاهایی را که رستوران عرضه میکند چاپ کنید.
- سعی کنید یکی از مقادیر چندتایی را تغییر دهید و مطمئن شوید پایتون ایجاد تغییرات را رد میکند.
- رستوران فهرست غذاها را تغییر میدهد و دو غذا را جایگزین میکند. یک خط برای بازنویسی چندتایی اضافه کنید و سپس به کمک حلقهی for تمام اعضای فهرستِ بازنگریشده را چاپ کنید.