Kahibaro
Discord Login Register

فصل ۸: مجموعه‌های داده

نگاه کلی به مجموعه‌های داده در پایتون

در برنامه‌های واقعی، معمولاً فقط با یک عدد یا یک رشته سروکار نداریم؛ بلکه با «چندین» مقدار کار می‌کنیم: فهرست نمره‌ها، نام دانش‌آموزان، قیمت محصولات، لیست کارها و …
در پایتون برای نگه‌داشتن چند مقدار در کنار هم، از «ساختارهای داده» (مجموعه‌های داده) استفاده می‌کنیم.

در این فصل فقط یک دید کلی از مهم‌ترین نوع‌های مجموعه‌ای در پایتون می‌گیرید و در زیرعنوان‌های بعدی (لیست، تاپل، دیکشنری، مجموعه‌ها) با هرکدام جداگانه کار خواهید کرد. اینجا هدف شما این است که:

چرا به مجموعه‌های داده نیاز داریم؟

فرض کنید می‌خواهید نمرهٔ سه آزمون را در برنامه‌تان استفاده کنید.
بدون استفاده از ساختار داده، شاید این‌طور بنویسید:

score1 = 18
score2 = 15.5
score3 = 20

حالا اگر ۳۰ نمره داشته باشید چه؟ باید score30 هم تعریف کنید؟
مشکل‌ها:

با یک مجموعهٔ داده (مثلاً «لیست») می‌توانید بنویسید:

scores = [18, 15.5, 20]

حالا همهٔ نمره‌ها را در یک متغیر منطقی و منظم دارید.

دسته‌بندی کلی مجموعه‌های داده

در پایتون چند نوع اصلی مجموعهٔ داده وجود دارد. در این فصل با این چهار نوع مقدماتی آشنا می‌شوید:

هر کدام ویژگی‌های خاص خود را دارند. برای شروع، چند ویژگی مهم را به زبان ساده ببینیم.

چند معیار مهم برای مقایسهٔ ساختارهای داده

۱. قابل تغییر بودن یا نبودن (Mutable / Immutable)
آیا بعد از ساختن مجموعه می‌توانید عناصرش را عوض کنید؟

۲. ترتیب‌دار بودن یا نبودن (Ordered / Unordered)
آیا ترتیب عناصر مهم و حفظ‌شده است؟

۳. اجازهٔ تکراری بودن عناصر
آیا می‌توان یک مقدار را چند بار داخل مجموعه داشت؟

۴. روش دسترسی به داده
آیا با «شمارهٔ موقعیت» (index) به عنصر می‌رسید یا با «کلید» (key)؟

در ادامه، یک جدول خیلی کلی (بدون جزئیات) از این چهار نوع:

نوعترتیب‌دار؟قابل‌تغییر؟تکرار مجاز؟روش دسترسی اصلی
لیست listبلهبلهبلهاندیس (شمارهٔ عنصر)
تاپل tupleبلهخیربلهاندیس
دیکشنری dictبله (از پایتون ۳٫۷ به بعد)بلهکلیدها یکتاکلید (key)
مجموعه setخیربلهخیر (همه یکتا)مستقیماً با مقدار

در زیرعنوان‌های بعدی، هر کدام از این‌ها را دقیق‌تر یاد می‌گیرید؛ فعلاً همین شناخت سطح بالا کافی است.

چند مثال ساده از موقعیت استفاده از هر ساختار

لیست (لیست معمولی از چیزها)

وقتی یک «فهرست» از چیزها دارید که ترتیب آن‌ها مهم است، یا می‌خواهید روی همه‌شان یک کار انجام دهید، لیست گزینهٔ خیلی خوبی است.

نمونه کاربرد:

names = ["Ali", "Sara", "Reza"]
prices = [12000, 35000, 78000]

در بخش «لیست‌ها (Lists)» با ساخت، تغییر، اضافه‌کردن و حذف و … در لیست‌ها آشنا می‌شوید.

تاپل (داده‌های نسبتاً ثابت)

وقتی یک سری اطلاعات ثابت دارید که قرار نیست در طول برنامه تغییر کنند، گاهی از «تاپل» استفاده می‌شود.
مثال خوب: مختصات یک نقطه، یا تنظیماتی که نمی‌خواهید اشتباهی تغییرشان بدهید.

point = (10, 20)
color = (255, 0, 0)   # رنگ قرمز در مدل RGB

در بخش «تاپل‌ها (Tuples)» می‌بینید که تاپل‌ها از نظر ظاهر شبیه لیست هستند، اما قابل تغییر نیستند.

دیکشنری (جفت کلید–مقدار)

وقتی می‌خواهید برای هر «کلید» یک «مقدار» نگه دارید، مثلاً برای هر «نام کاربر» یک «رمز عبور»، یا برای هر «کد محصول» یک «قیمت».

user = {
    "username": "ali123",
    "age": 25,
    "city": "Tehran"
}

اینجا username، age، city «کلید» هستند و "ali123"، 25، "Tehran" «مقدار» مربوط به هر کلید.
در بخش «دیکشنری‌ها (Dictionaries)» یاد می‌گیرید چطور با کلیدها مقدار را بخوانید، اضافه کنید و تغییر بدهید.

مجموعه (Set) – داده‌های یکتا

وقتی فقط می‌خواهید بدانید «چه چیزهایی» داریم، بدون این‌که ترتیب برایتان مهم باشد، و نمی‌خواهید تکراری‌ها را نگه دارید، set به‌درد می‌خورد.

مثلاً از یک لیست بزرگ ایمیل‌ها، بخواهید فقط ایمیل‌های «منحصر‌به‌فرد» را داشته باشید:

emails = ["a@test.com", "b@test.com", "a@test.com"]
unique_emails = set(emails)

در بخش «مجموعه‌ها (Sets – مقدماتی)» با این نوع و کاربردهایش (به‌خصوص حذف تکراری‌ها) آشنا می‌شوید.

انتخاب ساختار دادهٔ مناسب (نگاه مقدماتی)

در همین فصل یک زیرعنوان جداگانه برای «انتخاب ساختار دادهٔ مناسب» دارید که به‌طور مشخص‌تر کمک می‌کند تصمیم بگیرید کجا از چه چیزی استفاده کنید.
اینجا فقط چند راهنمای خیلی کلی می‌آوریم:

در ادامهٔ فصل، هر نوع را جداگانه تمرین می‌کنید و قدم‌به‌قدم حس بهتری نسبت به انتخاب ساختار مناسب پیدا می‌کنید.

چند تمرین پیشنهادی برای درک بهتر (بدون نوشتن کد پیچیده)

این تمرین‌ها را لازم نیست دقیقاً همین الان با کد حل کنید؛ می‌توانید فقط فکر کنید که برای هر مورد «چه ساختار داده‌ای» مناسب‌تر است:

  1. ذخیرهٔ ۵ نام دوست‌تان به ترتیبی که شماره تلفن‌شان را ذخیره کرده‌اید.
  2. نگه‌داشتن نام کاربری و رمز عبور برای یک کاربر.
  3. نگه‌داشتن نام روزهای هفته (این‌ها قرار نیست در طول برنامه عوض شوند).
  4. تهیهٔ مجموعه‌ای از زبان‌های برنامه‌نویسی که دوستان‌تان بلدند، به‌صورتی که تکراری‌ها حذف شود (مثلاً اگر دو نفر هر دو Python بلدند، فقط یک بار Python ثبت شود).

در زیرعنوان‌های بعدی، با هر کدام از این ساختارها به‌طور عملی کار خواهید کرد و جواب این تمرین‌ها برایتان طبیعی می‌شود.

Views: 7

Comments

Please login to add a comment.

Don't have an account? Register now!