دنباله های چند بعدی در زبان پایتون به چه معناست ؟

2

دنباله های چند بعدی در زبان پایتون به چه معناست ؟ 

کیانا ابراهیمی سوال پاسخ داده شده اکتبر 15, 2020
گذاشتن نظر
0

دنباله های چند بعدی در زبان پایتون به چه معناست ؟ 

اگر دنبالهها خود شامل دنباله باشند، دنبالههاي تودرتو یا چندبعدي نامیده مـیشـوند. بـراي نمونه به دنبالۀ زیر توجه کنید:

>> matrix=[[2,3],[4,5],[6,7]]
>>> matrix[2][0]
6

همانطور که میبینید براي دستیابی به عناصر تجزیهناپذیر موجود در این لیست تودرتو باید از دو عملگر [] استفاده کنیم. به همین خاطر ما به این دنباله، یک دنباله دوبعدي میگوییم. اگر رشتهها را به عنوان عناصر تجزیهپذیر استفاده کنـیم، مـیتـوانیم هـر رشـته را یـک دنبالـۀ تکبعدي ببینیم.  ر آن صورت دنبالهاي مانند دنبالۀ زیر هم یک دنبالۀ دو بعدي است:

>> S=[“James”, “Michel”, “Guido”]
>>> S[2][0]
G

براي اینکه با دنبالههاي چندبعدي بیشتر آشنا شویم با طراحی یک مثال آنها را ادامه میدهـیم. فرض کنید میخواهیم نمرات میانترم و پایانترم دانشجویی را در درس ریاضی ذخیره کنیم. بـه چنـد روش میتوانیم این کار را انجام دهیم. یکی از این راهها انتساب یک دیکشنري به یک متغیر است:

>>> mathematics = {‘midterm’:5, ‘final’:11}

همچنین اگر بهطور قراردادي اولین عدد را نمرة میانترم و دومین عدد را نمرة پایانترم در نظر بگیریم، میتوانیم با استفاده از یک لیست یا چندتایی هم این کار را انجام دهیم:

>>> mathematics = (5,11)

یا

>> mathematics = [5,11]

براي دستیابی به نمرات میتوانید از عملگر [] استفاده کنید:

>> midterm = mathematics[0]
>>> print midterm
5

حال فرض کنید بخواهیم نمرات میانترم و پایانترم چندین درس این دانشجو را ذخیره کنـیم. میتوانیم با استفاده از یک دیکشنري که مقادیري از چندتاییها را شامل میشود استفاده کنیم. ما ایـن عمل را براي دو درس این دانشجو انجام میدهیم:

>> student = {‘mathemathics’:[5,11], ‘Phisycs’:[3,10]}

و یا اگر به طور قراردادي به هر درس اندیسی نسبت دهـیم، مـیتـوانیم از لیسـتهـاي تودرتـو استفاده کنیم:

>> student = [[5,11], [3,10]]

با این قرارداد، مثلاً نمرة درس میانترم فیزیک را از این روش بهدست میآوریم:

>> print student[1][0]
3

اندیس 1 مشخصکنندة درس فیزیک و اندیس 0 مشخصکنندة نمرة میانترم است.با اینکه استفاده از لیستها در مقابل دیکشنريها کمی مبهم به نظر میرسد اما به زودي مزیت استفاده از این روش را در مییابید. ما توانستیم نمرات میانترم و پایانترم دو درس یک دانشجو را ذخیره کنیم و میتوانیم این کار را براي تعداد بیشتري از دروس هم انجام دهیم، اما آیا میتوان تعداد دانشجویان را افزایش داد؟ فرض کنید در رشتۀ تحصـیلی کـامپیوتر 100 نفـر دانشـجو وجـود دارد. بـراي ذخیـرة نمـرات میانترم و پایانترم این 100 دانشجو میتوان هر دو روش استفاده از لیست و دیکشنري را به کـار بـرد. ما این کار را مستقیماً با استفاده از اندیسگذاري هر دانشجو و استفاده  از لیستها، براي 5 نفـر از آنهـا انجام میدهیم. روند کلی براي ذخیرة نمرات بقیه هم به همین صورت است:

>>>scomputings=s[[[5,11],[3,10]],[[2,7],[3,8]],[[4,7],[3,9]],[[3
,9],[2,7]],[[6,12],[5,10]]]

حال که نگهداري نمرات به این سادگی است، بیایید نمرات تمام دانشـجویان یـک دانشـکده در رشتههاي مختلف را ذخیره کنیم. براي سادگی، فرض کنیـد ایـن دانشـکده 4 رشـته، در هـر رشـته 5 دانشجو و هر دانشجو 2 درس دارد. قبل از اینکه این کار را انجام دهیم، بهتر است دلیل استفاده از لیستها به جاي دیکشنريها را بیان کنیم. علیرغم اینکه دیکشنريها نحوة نگارش سادهتري را براي دسترسی به عناصر تجزیهناپذیر فراهم میسازند، اما استفاده از آنها در جهت نگهداري مقادیر داراي یک مشکل اساسی است. در مثالی که عنوان شد، فرض کنید دانشکدة مزبور داراي 10 رشـته و در هـر رشـته 100 نفـر دانشجو که هر کدام 5 درس را امتحان دادهاند، وجود داشته باشد. آنگاه براي نگهداري نمرات میانتـرم و پایانترم تمام دروس این تعداد دانشجو باید 10000 عدد را ذخیـره کنـیم. حـال اگـر بخـواهیم ایـن 10000 عدد را در یک دیکشنري ذخیره کنیم، بایـد کلمـات midterm و final را هـم هـر کـدام 5000 بار ذخیره کنیم. همچنین نام هر درس هم باید 500 بار تکرار شود و اگر هر دانشجو را بـا کلمـۀ student و شمارهاي در آخر آن (مثلاً student23 (نشان دهیم، باید این کلمات را هر کدام 5 بار ذخیره نماییم! با این حساب، مقدار فضایی که براي نگهداري محل یک نمره مشخص میشود، از مقدار فضـایی که براي خود نمره ذخیره میشود بیشتر است. بنابراین بهتر است براي جلوگیري از چنین فاجعهاي، از لیستهاي تودرتو استفاده کنیم و در عوض اسامی تکراري را اندیس گذاري کرده و در چند دیکشـنري نگهداري کنیم. حال فرض کنید نمرات تمام دانشجویان یک دانشکده را هم به روش قبل در متغیري به نام university ذخیره کردهایم. به طوريکه هر رشته با یک اندیس مشخص شـده اسـت. بـا ایـن فرض دیکشنريهاي مربوطه را مقداردهی میکنیم:

branches = {‘Computing’:0, Mathematics:1}
students = {‘student1’:0, ‘student2’:1, ‘student3’:2}
lessons = {‘mathematics’:0, ‘phisycs’:1, ‘programming’:2}
numKind = {‘midterm’:0, ‘final’:1}

با انجام این کار، میتوانیم نحوة نگارش براي بازیابی اطلاعات را هم تصحیح کنیم:

>>>sprintsuniversity[branches[‘Computing’]][students[‘student2’]
][lessons[‘mathematics’]][numKind[‘final’]]
7

هر چند که این نحوة نگارش به زیبایی استفاده از خود دیکشنريها نیست!

برای اموزش های ویدیویی زبان پایتون به بستر ویدیو های اموزشی بروید

بستر اموزش های ویدویی 

کیانا ابراهیمی سوال پاسخ داده شده اکتبر 15, 2020
گذاشتن نظر
پاسخ خود را بنویسید .
  • فعال
  • بازدیدها1808 times
  • پاسخ ها1 پاسخ
ورود به متاورس | متاورس ایرانی
ورود به متاورس ایران یا همان متاورس ملی

علامت ذره بین Tutorials سمت راست به رنگ قرمز به شما کمک خواهد کرد .

جدید ترین سوالات پرسیده شده

منقضی شدن سم بتانال 1 پاسخ | 0 آرا
ایا ایدز گزفتم؟ 0 پاسخ ها | 0 آرا
انتخاب ورزش رزمی 0 پاسخ ها | 1 رای
وزارت تعاون کار و رفاه اجتماعی نماد اعتماد الکترونیک اسناد و املاک کشور مرکز آموزش ویدیویی انجمن حم فروشگاه ملی تولید کنندگان مدیریت بر مدیران حم سامانه حیوانات رسانه ملی اخبار متا دانشگاه متاورس استخدام | دانش فروشگاه حم تبلیغات ملی بازار NFT متاورس رنگ نقشه ملی سه بعدی متا املاک و مستغلات