سلام :)
در ادامه مطالب قسمت اول، در این قسمت داده ساختارها رو در پایتون بررسی می کنیم.
داده ساختارها در پایتون :
ساختار داده های اصلی در زبان پایتون شامل لیست ها ، دیکشنری ها ، مجموعه ها و زوج مرتب ها هستند.
1 - لیست:
لیست در زبان پایتون مانند یک آرایه است با این تفاوت که اندازه آن ثابت نیست و می تواند تغییر کند و به عبارتی یک آرایه پویا است.
ابتدا لیست را تعریف می کنیم و سپس از آن استفاده می کنیم. خانه اول در لیست برابر صفر است و خانه n ام در لیست برابر با n-1 است. همچنین می توانیم از اندیس های منفی استفاده کنیم که لیست را از انتها به ابتدا پیمایش می کند.
لیست ها در پایتون یک نوع pointer هستند، به طور مثال در کد زیر هنگامی که ys=xs را نوشتیم دو لیست متفاوت ساخته نمی شود و لیست کپی نمی شود و اگه شما xs را تغییر بدید می بینید که مقادیر لیست ys هم تغییر می کند.
اگر خواستید یک لیست مشخص بسازید و به معنای واقعی داده کپی بشود می توانید از تابع copy استفاده کنید.
اگر می خواهیم ببینیم دو متغیر یکی هستند از دستور is استفاده می کنیم.
یکی از توابع لیست تابع append است ، هنگامی که می خواهیم یک عضو به لیست اضافه کنیم از تابع append اضافه می کنیم و مقدار ورودی به انتهای لیست اضافه می شود و هنگامی که از تابع pop استفاده می کنیم آخرین عضو از لیست برداشته می شود.
یک تابع دیگر که خیلی پر استفاده هست بحث چسباندن دو لیست به یکدیگر است که با عملگر + انجام می شود.
می توانید در لیست های پایتون به بازه ای از یک لیست دسترسی داشته باشید، هنگامی که می خواهید به بازه ای از لیست دسترسی داشته باشید همانند کد زیر اندیس های مدنظرتون رو تعیین می کنید، به طور مثال در کد زیر اندیس های بین 2 تا 4 به ما برگردونه میشن، دقت داشته باشید که خود 4 برنمی گرده!
هنگامی که عددی در یکی از طرفین قرار ندید از اول یا ابتدای لیست بازه خوانده می شود.
اگر می خواهید فقط چند تا اندیس آخر داشته باشید از اندیس های منفی می توانید استفاده کنید.
از همین شیوه علاوه بر نمایش متغیرها برای جایگزینی مقادیر اندیس ها هم می تونید استفاده کنید. این کار صرفا برای خوندن نیست! می تونید همزمان مقادیر چند اندیس را تغییر بدهید.
روی لیست می تونیم حلقه هم تعریف کنیم ، فرض کنید لیست زیر رو داریم ، می توانیم به راحتی با استفاده از دستور for و بدون تعیین اندازه لیست آن را در یک حلقه فراخوانی کنیم.
اگه خواستید علاوه بر مقدار ، به اندیس مقداری که می خوانید دسترسی داشته باشید از تابع enumerate استفاده کنید تا علاوه بر مقدار اندیس، شماره اندیس رو هم داشته باشید.
علاوه بر for می تونید از تابع range هم استفاده کنید.با استفاده از این کار لزوما تمام خانه ها خوانده نمی شود و رنجی از اندیس ها خوانده میشه. می تونید تعیین کنید هر چند اندیس یکبار خوانده شود. به طور مثال در کد زیر هر 2 خانه یک بار خوانده می شود.
بحث list comprehensions یکی از قابلیت های خیلی مفید در لیست های پایتون هست، این قابلیت کمک میکنه تغییرات رو خیلی سریع روی لیست انجام بدیم. وقتی احتیاج داریم یک لیست را به لیست دیگه تبدیل کنیم.
به طور مثال در کد زیر لیست رو به توان 2 می رسونیم و لیست جدید به توان 2 رسونده میشه.
3 - دیکشنری:
ساختار داده ای هست که اعضای آن یک زوج کلید و مقدار است. در کد زیر یک دیکشنری به اسم D تعریف شده است که اعضا با استفاده از "," جدا شده و زوج ها با استفاده از ":" مشخص شده اند.
می تونید از طریق کلید به اعضای یک دیکشنری دسترسی داشته باشید.
می تونید بررسی کنید که آیا دیکشنری کلید مدنظر شما را دارد یا ندارد. اگر وجود داشته باشد مقدار True برگردانده می شود و در غیر این صورت مقدار False برگردانده می شود.
برای دیکشنری هم comprehensions داریم . به طور مثال می خواهیم یک دیکشنری بسازیم که کلیدها 1 تا 4 هستند و مقادیر به توان 2 رسیده این اعداد باشند. می توانیم از کد زیر استفاده کنیم:
3 - زوج مرتب:
زوج مرتب یا Tuples به شکل زیر تعریف می شود و از طریق اندیس قابل دسترسی است.
نکته مهم در زوج مرتب این هست که زوج مرتب ها غیرقابل تغییر هستند! وقتی یک زوج مرتب تعریف می کنید دیگه نمی تونید مقادیر اون رو تغییر بدید.
اگه خواستیم زوج مرتبی با یک المان داشته باشیم پرانتز باز و بسته خالی فایده نداره! شبیه کد زیر که int تشخیص داده شده، باید یک کاما قبل از 2 حتما بذارید!
4 - مجموعه :
مجموعه ها در پایتون دقیقا همان تعریف ریاضی رو دارند، مجموعه ای از اعضا که هیچ ترتیبی هم بینشون وجود نداره، می تونید چک کنید fish یا cat داخل مجموعه وجود داره ولی اندیس خاصی ندارن!
با توجه به حجم مطالب مورد نیاز نوشته به 3 قسمت تقسیم شده و لطفا برای مطالعه قسمت اول به این لینک و برای مطالعه قسمت سوم به این لینک مراجعه کنید.