• ارسال کننده: سمیه مظفری
  • تاریخ انتشار: ۱۳۹۸ / ۰۴ / ۱۰

معرفی list و طرز ایجاد آن در پایتون

در این مقاله با تعریف لیست ها در پایتون، تولید لیست های عددی توسط تابع range()، تولید لیست با تابع list()، تغییر دادن آیتم های یک لیست، نحوه دسترسی به اعضای لیست، مهم ترین توابع درون ساخته قابل استفاده در لیست ها، تست عضویت در لیست ها، نحوه ایجاد لیست با List Comprehension، سه تمرین با استفاده از لیست ها آشنا می شوید.

لیست ها (List): مجموعه ای از عناصر مرتب و قابل تغییر هستند و می توانند دارای عناصر تکراری هم باشند. لیست ها بسیار شبیه آرایه ها هستند ولی برخلاف آرایه ها که مجموعه ای از عناصر هم نوع را در خود ذخیره می کنند، می توانند حاوی هر نوع متغیری باشند. مثلا لیست زیر دارای دو عدد صحیح، یک رشته، یک عدد اعشاری و حتی یک لیست دیگر (لیست تو در تو) است. به لیستی که هیچ عضوی نداشته باشد لیست تهی گویند که با یک جفت براکت خالی آن را نشان می دهند.

                          معرفی list و طرز ایجاد آن در پایتون

برای ایجاد یک لیست کافی است بعد از تعیین نامی برای آن و نوشتن علامت انتساب “=”، اعضای لیست مربوطه را در درون یک جفت براکت [] قرار داده و آن ها را با ویرگول از هم جدا کنیم.

تولید لیست های عددی توسط تابع range()

پایتون برای تولید راحت تر لیست هایی که حاوی اعداد صحیح متوالی هستند از تابعی با نام range() استفاده می کند . این تابع می تواند یک ورودی (آرگومان)، دو ورودی و یا سه ورودی داشته باشد.

اگر این تابع دارای یک آرگومان باشد اعداد صفر تا یکی کمتر از مقدار آرگومان خود را تولید می کند مثلا range(5)  لیستی که شامل اعداد 0 تا 4 است را تولید می کند.

حال اگر دو آرگومان داشته باشد لیستی شامل همه اعداد صحیح بین اولین آرگومان و دومین آرگومان را برمی گرداند با این تفاوت که آرگومان دوم را شامل نمی شود. مثلا تابع range(3 , 6) اعداد 3 تا 5 را تولید می کند.

و در نهایت اگر این تابع دارای آرگومان سوم هم باشد این آرگومان گام حرکت (میزان اختلاف اعداد متوالی) نامیده می شود. مثلا تابع range(3,8 ,2) با شروع از عدد 3، دو تا دو تا جلو رفته و اعداد 3 و 5 و 7 را تولید می کند.

تولید لیست های عددی توسط تابع range()

تولید لیست با تابع list()

علاوه بر روش های بالا، شما می توانید با استفاده از تابع سازنده list()،  نیز لیست خود را ایجاد کنید. هم چنین با این تابع می توانید انواع داده های دیگر مثل دیکشنری ، تاپل، set و رشته را به یک لیست تبدیل کنید.

تغییر دادن آیتم های یک لیست

لیست ها برخلاف رشته و تاپل ها ، نوع داده تغییر پذیر هستند به این معنا که می توان عناصر آن ها را تغییر داد و یا آیتم هایی را به آن ها اضافه نمود.

شما می توانید برای تغییر دادن یک آیتم یا رنجی از آیتم های یک لیست از عملگر انتساب =  استفاده کنید.  مثلا در قطعه کد زیر می بینید لیستی که قرار بود اعداد فرد در آن قرار بگیرد به اشتباه، حاوی اعداد زوج است لذا ما در دو مرحله، با استفاده از عملگر انتساب همه آن ها را به اعداد فرد تغییر داده ایم.

تغییر دادن آیتم های یک لیست در پایتون

اضافه کردن عناصر به لیست

برای اضافه کردن عناصر جدید به یک لیست می توانید از یکی از دو تابع append() و یا extend() استفاده کنید. تنها تفاوت این دو تابع در تعداد آیتم هایی است که قرار است به لیست اضافه کنید. به عبارت دیگر برای اضافه کردن یک آیتم باید از تابع append() و برای اضافه کردن چندین آیتم از تابع extend() استفاده کنید.

اضافه کردن عناصر به لیست در پایتون

درحقیقت از تابع extend() برای اضافه کردن عناصر یک رشته، تاپل، دیکشنری و یا لیست دیگر به انتهای لیست جاری استفاده می شود.

تابع extend() در پایتون

نحوه دسترسی به اعضای لیست
  • دسترسی از طریق اندیس

برای دسترسی به اعضای یک لیست، نام لیست را به همراه علامت براکت[]  که حاوی اندیس مورد نظر است می نویسیم. در لیست ها هم مشابه آرایه ها، اندیس ها عدد صحیح هستند و از عدد صفر شروع می شوند. بنابراین اگر بخواهید به عنصر دوم لیست، دسترسی پیدا کنید باید از اندیس 1 استفاده کنید.

تلاش برای دسترسی به اندیسی از لیست که اصلا وجود ندارد منجر به تولید خطای IndexError می شود. علاوه بر این شما نمی توانید به جز عدد صحیح، از یک عدد اعشاری یا هر نوع داده دیگری به عنوان اندیس یک لیست استفاده کنید چرا که با خطای TypeError مواجه می شوید.

• دسترسی از طریق اندیس

  • دسترسی از طریق اندیس منفی

پایتون به شما اجازه می دهد که برای دسترسی به عناصر یک لیست یا یک رشته از اندیس منفی هم استفاده کنید. در این شیوه، اندیس -1  به آخرین آیتم لیست و -2 به آیتم ماقبل آخر لیست اشاره می کند.

اگر برای دسترسی به عناصر لیست، از اندیس منفی استفاده کنید، پایتون عناصر لیست را از آخر به اول و به صورت معکوس پیمایش می کند.

• دسترسی از طریق اندیس منفی

نحوه بخش بندی (slicing) و برش یک لیست

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

نحوه بخش بندی (slicing) و برش یک لیست در پایتون

دسترسی به تمامی عناصر یک لیست

باز هم مشابه رشته ها می توان با استفاده از حلقه for ابتدا تا انتهای یک لیست را پیمایش نموده و به تمامی اعضای آن دسترسی پیدا کرد.

دسترسی به تمامی عناصر یک لیست در پایتون

کاربرد دو عملگر + و * در لیست ها

کاری که این دو عملگر در لیست انجام می دهند دقیقا مشابه کاری است که در مورد رشته ها انجام می دادند. یعنی عملگر + برای الحاق بیش از یک لیست با هم بکار میرود و عملگر * هم یک لیست را به تعداد دفعات مشخص شده تکرار می کند.

کاربرد دو عملگر + و * در لیست ها

کاربرد تابع insert

شما می توانید با استفاده از این تابع، عنصری را در مکان مورد نظر خود در یک لیست درج کنید.  برای درج چندین آیتم در یک لیست هم می توان توسط عملگر slice : عناصر مورد نظر را در یک slice خالی از لیست گنجاند.

کاربرد تابع insert در پایتون

مهم ترین توابع درون ساخته قابل استفاده در لیست ها

مهم ترین توابع درون ساخته قابل استفاده در لیست ها

برای یافتن بزرگ ترین و کوچک ترین عنصر یک لیست نیز می توان مشابه رشته ها، به ترتیب از توابع max و min  استفاده کرد. اگر لیست ما حاوی اعداد باشد طرز کار این تابع کاملا مشخص است. اما اگر لیست ما حاوی چندین رشته یا کاراکتر باشد ملاک بزرگ تری و کوچک تری را ترتیب حروف الفبا (ترتیب اولین حرف رشته ها) مشخص خواهد کرد.

ملاک بزرگ تری و کوچک تری لیستها با ترتیب حروف الفبا

علاوه بر این، برای محاسبه مجموع عناصر لیست های عددی از تابع sum() ، برای محاسبه تعداد آیتم های یک لیست از تابع len() و برای مرتب سازی یک لیست از تابع sorted استفاده می شود.

مرتب سازی یک لیست از تابع sorted

تابع count  تعداد تکرار عنصر مشخص شده را در لیست مربوطه برمی گرداند.

تابع reverse یک لیست را معکوس می کند.

تابع sort یک لیست را براساس حروف الفبا یا از کوچک تر به بزرگ تر مرتب می کند.

تابع sort یک لیست

تابع  index() نیز اولین آیتمی از لیست را که اندیسش برابر آرگومان این تابع است برمی گرداند. منظور از کلمه “اولین”، برای زمان هایی است که لیست دارای عناصر تکراری هم باشد. مثلا همانطور که در مثال زیر می بینید با این که در لیست زیر چندین نمونه از اعداد 2 و 3 و 7 وجود دارد اما تابع index تنها اندیس اولین داده متناظر را برمی گرداند.

تابع index() در لیست

تست عضویت در لیست ها

برای بررسی وجود یا عدم وجود عنصری در یک لیست، از عملگرهای عضویت in و عدم عضویت not in استفاده می کنیم. در بخش عملگرها به طرز کار این دو تابع اشاره گردیده است. اما با دقت در مثال زیر هم می توانید به راحتی به ماهیت این دو عملگر پی ببرید.

تست عضویت در لیست ها

حذف داده های یک لیست با توابع remove()  و pop()
  • برای حذف داده های یک لیست کافی است از تابع remove استفاده کرده و عنصر مورد نظر را به عنوان آرگومان به این تابع ارسال کنیم.

حذف داده های یک لیست با توابع remove() و pop()

  • تابع pop() نیز آخرین عنصر یک لیست را حذف کرده و برمیگرداند. این تابع کمک می کند که لیست ها را به صورت ساختمان داده پشته (stack) که در آن آخرین ورودی، اولین خروجی (LIFO) بود پیاده سازی کنیم.

• تابع pop() در پایتون

  • برای حذف تمامی عناصر یک لیست و در حقیقت خالی کردن لیست هم باید از تابع clear استفاده کنید. در مثال زیر، ملاحظه می کنید که این تابع عملکردی مشابه عبارت del std[:] دارد.

حذف تمامی عناصر یک لیست

  • علاوه بر این، با انتساب یک لیست خالی به بخشی از یک لیست هم می توان، عناصر مربوط به آن بخش را حذف نمود.

انتساب یک لیست خالی

حذف عنصری از لیست با کلمه کلیدی del

علاوه بر توابع remove()  و pop() از کلمه کلیدی del هم می توان برای حذف یک یا چند آیتم یک لیست استفاده نمود.

حذف عنصری از لیست با کلمه کلیدی del

حذف خود لیست

از کلمه کلیدی del  می توان برای پاک کردن یک لیست هم استفاده کرد. می بینید که اگر بخواهیم پس از حذف لیستی به آن دسترسی پیدا کنیم با خطای NameError مواجه می شویم. چرا که دیگر وجود ندارد.

حذف خود لیست

نحوه ایجاد لیست با List Comprehension

در این شیوه شما می توانید به جای ایجاد و مقدار دهی دستی یک لیست، عبارت محاسباتی یا همان فرمول تولید عناصر لیست خود را به همراه یک حلقه for در داخل علامت براکت بنویسید. مثلا در قطعه کد زیر می بینید که ما به همین شیوه، تعدادی از توان های عدد 2 و نیز توان دوم اعداد 0 تا 9 را در قالب دو لیست مجزا تولید کرده ایم.

نحوه ایجاد لیست با List Comprehension 

سه تمرین با استفاده از لیست ها
  • برنامه محاسبه مجموع دو ماتریس دو بعدی

در این برنامه قرار است شما دو ماتریس دو بعدی را توسط لیست های تودرتو با یکدیگر جمع کنید. برای این کار باید علاوه بر لیست ها با حلقه های تکرار مخصوصا حلقه for هم آشنا باشید.

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

به عنوان مثال لیست X = [[1, 2], [4, 5], [3, 6]] یک ماتریس 2*3 (دارای 3 ردیف و دو ستون) را نشان می دهد. هم چنین x[0] نشان دهنده اولین ردیف این ماتریس و x[0][0] نشان دهنده داده ای است که در اولین ستون از ریف اول قرار دارد.

• برنامه محاسبه مجموع دو ماتریس دو بعدی

  • برنامه به دست آوردن معکوس یک ماتریس

علاوه بر این، با استفاده از لیست های تودرتو ، می توانید معکوس یک ماتریس را هم به دست بیاورید. معکوس یک ماتریس، ماتریسی است که جای سطر و ستون های آن عوض شده است. مثلا داده ای که در ماتریس x در ردیف i ام و ستون j ام قرار داشت در ماتریس معکوس x، در ردیف j ام و ستون i ام قرار می گیرد.

• برنامه به دست آوردن معکوس یک ماتریس

  • برنامه حذف عناصر تکراری از یک لیست

شما می توانید با تلفیق آموخته های خود راجب نوع داده دیکشنری و لیست ها این کار را به راحتی انجام دهید. مثلا فرض کنید لیستی همانند لیست زیر داریم و می خواهیم نمونه های تکراری عناصر لیست را حذف کنیم.

mylist = [“a”, “b”, “a”, “c”, “c”]

برای این کار کافیست از تابع fromkeys()  مبحث دیکشنری ها کمک بگیریم. این تابع یک لیست، رشته، تاپل و یا set را  به عنوان آرگومان خود دریافت کرده و دیکشنری جدیدی ایجاد می کند. به طوری که کلیدهای دیکشنری جدید، همان عناصر رشته یا لیست مورد نظر هستند و همه مقادیر هم برابرند با None.

این دیکشنری جدید تمامی عناصر تکراری لیست قبلی را به صورت خودکار حذف می کند چرا که دیکشنری ها نمی توانند اعضای تکراری داشته باشند. حال برای حفظ کلیدها و حذف مقادیر آن ها می توانیم مجددا دیکشنری تولید شده را توسط تابع list() به یک لیست تبدیل کنیم. کار تمام است!

• برنامه حذف عناصر تکراری از یک لیست

امیدواریم آموزش های این مقاله شما را با تعریف لیست ها و طرز ایجاد آن در پایتون آشنا کرده باشد. هم چنان با ما همراه باشید.

ترجمه: رقیه آقایاری

 

 

 



 

به اشتراک بگذارید :       فیس بوک کلوب

 

برچسب ها:
این مقاله اختصاصاً برای یاد بگیر دات کام تهیه شده است استفاده از آن با ذکر منبع همراه با لینک آن و نام نویسنده یا مترجم مجاز است

 

در یاد بگیر دات کام مشترک شوید و آخرین مطالب و مقالات را در ایمیل خود دریافت نمایید
برای عضویت، ایمیل خود را وارد کرده و بروی اشتراک کلیک کنید



تبلیغات اینترنتی در یاد بگیر دات کام

بسته های تبلیغاتی ارزان قیمت

 
بستن تبلیغات

Useful Websites Directory

طراحی سایت
چاقی صورت
تور کوش آداسی
وقت سفارت انگلیس
ویزای تحصیلی کانادا
ردیاب خودرو



صفحه ما را در فیس بوک دنبال کنید صفحه ما را در توییتر دنبال کنید صفحه ما را در گوگل پلاس دنبال کنید صفحه ما را در  تلگرام دنبال کنید صفحه ما را در  اینستاگرام دنبال کنید صفحه ما را در لینکداین دنبال کنید